Replace one error with inform.
authorMartin Liska <mliska@suse.cz>
Tue, 28 Jan 2020 09:26:53 +0000 (10:26 +0100)
committerMartin Liska <mliska@suse.cz>
Tue, 28 Jan 2020 09:26:53 +0000 (10:26 +0100)
PR c++/92440
* pt.c (redeclare_class_template): Use inform
for the second location.
PR c++/92440
* g++.dg/template/pr92440.C: New test.
* g++.dg/cpp0x/vt-34314.C: Update error to note.
* g++.dg/template/pr59930-2.C: Likewise.
* g++.old-deja/g++.pt/redecl1.C: Likewise.

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/vt-34314.C
gcc/testsuite/g++.dg/template/pr59930-2.C
gcc/testsuite/g++.dg/template/pr92440.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/redecl2.C
gcc/testsuite/g++.old-deja/g++.pt/redecl1.C

index 44f397539f37601e45a08a9f1a62e9905155ca6d..f029c202a1962d1e57406bd14d2d6e0c52aa125c 100644 (file)
@@ -1,3 +1,9 @@
+2020-01-28  Martin Liska  <mliska@suse.cz>
+
+       PR c++/92440
+       * pt.c (redeclare_class_template): Use inform
+       for the second location.
+
 2020-01-27  Jason Merrill  <jason@redhat.com>
 
        PR c++/90966
index 6e614d5a058b2fb13a461b1d76f1f8351a298943..274fe84c18fd1f3c8165e97e52759cfb3ea02598 100644 (file)
@@ -6149,7 +6149,7 @@ redeclare_class_template (tree type, tree parms, tree cons)
                  != TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))))
        {
          error ("template parameter %q+#D", tmpl_parm);
-         error ("redeclared here as %q#D", parm);
+         inform (input_location, "redeclared here as %q#D", parm);
          return false;
        }
 
index 6518f7f2307863ac71790bfb677cbcbbe15e8c55..255cd08df3143a1dd4a8be46e567b250b737a9f1 100644 (file)
@@ -1,3 +1,11 @@
+2020-01-28  Martin Liska  <mliska@suse.cz>
+
+       PR c++/92440
+       * g++.dg/template/pr92440.C: New test.
+       * g++.dg/cpp0x/vt-34314.C: Update error to note.
+       * g++.dg/template/pr59930-2.C: Likewise.
+       * g++.old-deja/g++.pt/redecl1.C: Likewise.
+
 2020-01-28  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/93418
index ee0ed01b8d31841727de1fa0a8c3022504a5e754..b37cac53223a635a5e12638daf48edaa6e7cae56 100644 (file)
@@ -4,7 +4,7 @@ template<typename Fun, typename... Args> // { dg-error "template parameter" }
 struct call;
 
 template<typename Fun, typename Arg0>
-struct call // { dg-error "redeclared here" }
+struct call // { dg-message "note: redeclared here" }
 {
     template<typename Sig>
     struct result;
@@ -21,7 +21,7 @@ template<typename Fun, int... N> // { dg-error "template parameter" }
 struct call2;
 
 template<typename Fun, int N>
-struct call2 // { dg-error "redeclared here" }
+struct call2 // { dg-message "note: redeclared here" }
 {
     template<typename Sig>
     struct result;
@@ -37,7 +37,7 @@ template<typename Fun, template<typename> class... TT> // { dg-error "template p
 struct call3;
 
 template<typename Fun, template<typename> class TT>
-struct call3 // { dg-error "redeclared here" }
+struct call3 // { dg-message "note: redeclared here" }
 {
     template<typename Sig>
     struct result;
index a7e6ea4ea9aabdc51c7d9544df1aa11862351240..65ec58e23f4927bfb553a2148d085a08c3aa4e89 100644 (file)
@@ -6,7 +6,7 @@ namespace N {
     // Injects N::N
     template < T > friend class N;
     // { dg-error "template parameter" "" { target *-*-* } .-1 }
-    // { dg-error "redeclared"  "" { target *-*-* } .-2 }
+    // { dg-message "note: redeclared"  "" { target *-*-* } .-2 }
   };
 }
 
diff --git a/gcc/testsuite/g++.dg/template/pr92440.C b/gcc/testsuite/g++.dg/template/pr92440.C
new file mode 100644 (file)
index 0000000..20db5f1
--- /dev/null
@@ -0,0 +1,10 @@
+// PR c++/92440
+// { dg-do compile }
+
+template <int T> // { dg-error "template parameter" }
+struct S {
+    template <class U>
+    friend struct S;  // { dg-message "note: redeclared here as" }
+};
+
+S<0> s;
index 4dd432e6fea2e19167c1250674181b1ad186d1aa..31334f4f3343dd79f4f1b997a035a6865c9560bd 100644 (file)
@@ -6,4 +6,4 @@
 // non-type template parameter.
 
 template <int i> struct X;     // { dg-error "template parameter" }
-template <int* p> struct X;    // { dg-error "redeclared here" }
+template <int* p> struct X;    // { dg-message "note: redeclared here" }
index 4a580e177424050f9a99c5a8723d2861a1b3d7df..48517f5d1d3e9d46ace393d3479fddb6125febe4 100644 (file)
@@ -16,7 +16,7 @@ template <class T> // { dg-error "template parameter" }
 struct S3;
 
 template <int I>
-struct S3; // { dg-error "redeclared here" } 
+struct S3; // { dg-message "note: redeclared here" } 
 
 template <template <class T> class C>
-struct S3; // { dg-error "redeclared here" } 
+struct S3; // { dg-message "note: redeclared here" }