From 1d8593070a62b5e5e7583687648c6d34e825cee2 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Tue, 28 Jan 2020 10:27:16 +0100 Subject: [PATCH] Add couple of auto_diagnostic_group in redeclare_class_template. PR c++/92440 * pt.c (redeclare_class_template): Group couple of errors and inform messages with auto_diagnostic_group. --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f029c202a19..3d5c9a14492 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2020-01-28 Martin Liska + + PR c++/92440 + * pt.c (redeclare_class_template): Group couple of + errors and inform messages with auto_diagnostic_group. + 2020-01-28 Martin Liska PR c++/92440 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 274fe84c18f..e889c800aca 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -6148,6 +6148,7 @@ redeclare_class_template (tree type, tree parms, tree cons) && (TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (tmpl_parm)) != TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm))))) { + auto_diagnostic_group d; error ("template parameter %q+#D", tmpl_parm); inform (input_location, "redeclared here as %q#D", parm); return false; @@ -6159,6 +6160,7 @@ redeclare_class_template (tree type, tree parms, tree cons) tree p2 = TREE_VEC_ELT (parms, i); if (!template_parameter_constraints_equivalent_p (p1, p2)) { + auto_diagnostic_group d; error ("declaration of template parameter %q+#D with different " "constraints", parm); inform (DECL_SOURCE_LOCATION (tmpl_parm), @@ -6172,6 +6174,7 @@ redeclare_class_template (tree type, tree parms, tree cons) A template-parameter may not be given default arguments by two different declarations in the same scope. */ + auto_diagnostic_group d; error_at (input_location, "redefinition of default argument for %q#D", parm); inform (DECL_SOURCE_LOCATION (tmpl_parm), "original definition appeared here"); @@ -6206,6 +6209,7 @@ redeclare_class_template (tree type, tree parms, tree cons) /* Two classes with different constraints declare different entities. */ if (!cp_tree_equal (req1, req2)) { + auto_diagnostic_group d; error_at (input_location, "redeclaration %q#D with different " "constraints", tmpl); inform (DECL_SOURCE_LOCATION (tmpl), -- 2.30.2