class.c (add_method): Change pair of errors to error + inform.
authorPaolo Carlini <paolo.carlini@oracle.com>
Thu, 29 Jun 2017 22:32:33 +0000 (22:32 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 29 Jun 2017 22:32:33 +0000 (22:32 +0000)
/cp
2017-06-29  Paolo Carlini  <paolo.carlini@oracle.com>

* class.c (add_method): Change pair of errors to error + inform.
(handle_using_decl): Likewise.

/testsuite
2017-06-29  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/cpp0x/inh-ctor3.C: Adjust for dg-message vs dg-error.
* g++.dg/diagnostic/variadic1.C: Likewise.
* g++.dg/gomp/udr-3.C: Likewise.
* g++.dg/overload/error1.C: Likewise.
* g++.dg/overload/error2.C: Likewise.
* g++.dg/template/duplicate1.C: Likewise.
* g++.old-deja/g++.benjamin/warn02.C: Likewise.
* g++.old-deja/g++.brendan/arm2.C: Likewise.
* g++.old-deja/g++.other/redecl2.C: Likewise.
* g++.old-deja/g++.other/redecl4.C: Likewise.
* g++.old-deja/g++.pt/memtemp78.C: Likewise.

From-SVN: r249820

14 files changed:
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/inh-ctor3.C
gcc/testsuite/g++.dg/diagnostic/variadic1.C
gcc/testsuite/g++.dg/gomp/udr-3.C
gcc/testsuite/g++.dg/overload/error1.C
gcc/testsuite/g++.dg/overload/error2.C
gcc/testsuite/g++.dg/template/duplicate1.C
gcc/testsuite/g++.old-deja/g++.benjamin/warn02.C
gcc/testsuite/g++.old-deja/g++.brendan/arm2.C
gcc/testsuite/g++.old-deja/g++.other/redecl2.C
gcc/testsuite/g++.old-deja/g++.other/redecl4.C
gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C

index 2117eb6f5a1c4897803642489ae0d073175d708d..40153aafea0997cedb542009b7b6dd3cd554ae23 100644 (file)
@@ -1,3 +1,8 @@
+2017-06-29  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * class.c (add_method): Change pair of errors to error + inform.
+       (handle_using_decl): Likewise.
+
 2017-06-29  Jason Merrill  <jason@redhat.com>
 
        * constexpr.c, error.c, tree.c: Remove WITH_CLEANUP_EXPR handling.
index c7ea3f4f5002c22a39429385cd97d9d41fc857ff..09633b8dd9f333ff40ccca3a0c3550393717ea3c 100644 (file)
@@ -1217,10 +1217,11 @@ add_method (tree type, tree method, bool via_using)
                        continue;
                    }
                  error_at (DECL_SOURCE_LOCATION (method),
-                           "%q#D", method);
-                 error_at (DECL_SOURCE_LOCATION (fn),
-                           "conflicts with version inherited from %qT",
-                           basef);
+                           "%q#D conflicts with version inherited from %qT",
+                           method, basef);
+                 inform (DECL_SOURCE_LOCATION (fn),
+                         "version inherited from %qT declared here",
+                         basef);
                }
              /* Otherwise defer to the other function.  */
              return false;
@@ -1238,8 +1239,10 @@ add_method (tree type, tree method, bool via_using)
            }
          else
            {
-             error ("%q+#D cannot be overloaded", method);
-             error ("with %q+#D", fn);
+             error_at (DECL_SOURCE_LOCATION (method),
+                       "%q#D cannot be overloaded with %q#D", method, fn);
+             inform (DECL_SOURCE_LOCATION (fn),
+                     "previous declaration %q#D", fn);
              return false;
            }
        }
@@ -1371,16 +1374,21 @@ handle_using_decl (tree using_decl, tree t)
           the same name already present in the current class.  */;
       else
        {
-         error ("%q+D invalid in %q#T", using_decl, t);
-         error ("  because of local method %q+#D with same name",
-                old_value);
+         error_at (DECL_SOURCE_LOCATION (using_decl), "%qD invalid in %q#T "
+                   "because of local method %q#D with same name",
+                   using_decl, t, old_value);
+         inform (DECL_SOURCE_LOCATION (old_value),
+                 "local method %q#D declared here", old_value);
          return;
        }
     }
   else if (!DECL_ARTIFICIAL (old_value))
     {
-      error ("%q+D invalid in %q#T", using_decl, t);
-      error ("  because of local member %q+#D with same name", old_value);
+      error_at (DECL_SOURCE_LOCATION (using_decl), "%qD invalid in %q#T "
+               "because of local member %q#D with same name",
+               using_decl, t, old_value);
+      inform (DECL_SOURCE_LOCATION (old_value),
+             "local member %q#D declared here", old_value);
       return;
     }
 
index 8fe42baf912373710e6d3d2ade973bb2df3018f5..f3dad9ec6f6787cb3c29991efc4351d8bca00d4c 100644 (file)
@@ -1,3 +1,17 @@
+2017-06-29  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * g++.dg/cpp0x/inh-ctor3.C: Adjust for dg-message vs dg-error.
+       * g++.dg/diagnostic/variadic1.C: Likewise.
+       * g++.dg/gomp/udr-3.C: Likewise.
+       * g++.dg/overload/error1.C: Likewise.
+       * g++.dg/overload/error2.C: Likewise.
+       * g++.dg/template/duplicate1.C: Likewise.
+       * g++.old-deja/g++.benjamin/warn02.C: Likewise.
+       * g++.old-deja/g++.brendan/arm2.C: Likewise.
+       * g++.old-deja/g++.other/redecl2.C: Likewise.
+       * g++.old-deja/g++.other/redecl4.C: Likewise.
+       * g++.old-deja/g++.pt/memtemp78.C: Likewise.
+
 2017-06-29  Cesar Philippidis  <cesar@codesourcery.com>
 
        PR fortran/77765
index 8cbeed6604792e5176f745f39db83d488c2add27..c5a00750236d1078c7eca21ab77255aa2e07c7c8 100644 (file)
@@ -8,7 +8,7 @@ struct B2 {
   B2(int);
 };
 struct D1 : B1, B2 {
-  using B1::B1;                        // { dg-error "inherited" }
+  using B1::B1;                        // { dg-message "declared" }
   using B2::B2;                        // { dg-error "inherited" }
 };                        // ill-formed: attempts to declare D1(int) twice
 struct D2 : B1, B2 {
index 69f1f988f300804493346a9d9a31a2307a7da009..7e3db3143284df2b7da4253f2c88dd5701f18099 100644 (file)
@@ -4,6 +4,6 @@
 template<int N> struct B { };
 template<typename... T> struct A
 {
-  B<sizeof...(T)> f();         // { dg-error "sizeof\\.\\.\\." }
+  B<sizeof...(T)> f();         // { dg-message "sizeof\\.\\.\\." }
   B<42> f();                   // { dg-error "cannot be overloaded" }
 };
index 9fc6f40820adf68d4a7f5333b918b6bc1a1479b7..57531f2042b57291ec1a3abf73a9b6ef1b587f95 100644 (file)
@@ -77,7 +77,7 @@ namespace N2
 {
   struct U
   {
-    #pragma omp declare reduction (bar: S: omp_out.s *= omp_in.s)      // { dg-error "with" }
+    #pragma omp declare reduction (bar: S: omp_out.s *= omp_in.s)      // { dg-message "previous" }
     #pragma omp declare reduction (bar: S: omp_out.s += omp_in.s)      // { dg-error "cannot be overloaded" }
   };
 }
@@ -109,9 +109,9 @@ namespace N4
   struct U
   {
     #pragma omp declare reduction (bar: T: omp_out.t += omp_in.t)
-    #pragma omp declare reduction (bar: S: omp_out.s *= omp_in.s)      // { dg-error "with" }
+    #pragma omp declare reduction (bar: S: omp_out.s *= omp_in.s)      // { dg-message "previous" }
     #pragma omp declare reduction (bar: S: omp_out.s += omp_in.s)      // { dg-error "cannot be overloaded" }
-    #pragma omp declare reduction (bar: long: omp_out += omp_in)       // { dg-error "with" }
+    #pragma omp declare reduction (bar: long: omp_out += omp_in)       // { dg-message "previous" }
     #pragma omp declare reduction (bar: long int: omp_out += omp_in)   // { dg-error "cannot be overloaded" }
     #pragma omp declare reduction (bar: short unsigned: omp_out += omp_in)
     #pragma omp declare reduction (bar: short int: omp_out += omp_in)
@@ -132,7 +132,7 @@ namespace N5
   template <typename T>
   struct U
   {
-    #pragma omp declare reduction (bar: T: omp_out.s *= omp_in.s)      // { dg-error "with" }
+    #pragma omp declare reduction (bar: T: omp_out.s *= omp_in.s)      // { dg-message "previous" }
     #pragma omp declare reduction (bar: T: omp_out.s += omp_in.s)      // { dg-error "cannot be overloaded" }
   };
   U<S> u;
@@ -159,9 +159,9 @@ namespace N6
   {
     typedef V V2;
     #pragma omp declare reduction (bar: T: omp_out.t += omp_in.t)
-    #pragma omp declare reduction (bar: V: omp_out.s *= omp_in.s)      // { dg-error "with" }
+    #pragma omp declare reduction (bar: V: omp_out.s *= omp_in.s)      // { dg-message "previous" }
     #pragma omp declare reduction (bar: V2: omp_out.s += omp_in.s)     // { dg-error "cannot be overloaded" }
-    #pragma omp declare reduction (bar: long: omp_out += omp_in)       // { dg-error "with" }
+    #pragma omp declare reduction (bar: long: omp_out += omp_in)       // { dg-message "previous" }
     #pragma omp declare reduction (bar: long int: omp_out += omp_in)   // { dg-error "cannot be overloaded" }
     #pragma omp declare reduction (bar: short unsigned: omp_out += omp_in)
     #pragma omp declare reduction (bar: short int: omp_out += omp_in)
index 6c5998c720af53aa72b426037d0a0e134555f3f0..a4fd4854eb20ffb16ac2035e3a45e72a5a59d777 100644 (file)
@@ -2,6 +2,6 @@
 
 struct S
 {
-  void f () {} // { dg-error "with" }
+  void f () {} // { dg-message "previous" }
   int f () { return 0; } // { dg-error "overloaded" }
 };
index 4a9d35bc49de730e5d5804ef74ae33cf45ccdec6..23a2ea18d3aa1a229331669ac5eff7e4e1eb6e74 100644 (file)
@@ -6,6 +6,6 @@
 
 struct A
 {
-  void foo();  // { dg-error "with" }
+  void foo();  // { dg-message "previous" }
   virtual void foo();  // { dg-error "cannot be overloaded" }
 };
index c9cdab4b932163b80c3d5a3c1b789a5ffb4465e8..39185b350e70ddaf6591b34860d5190349b317ae 100644 (file)
@@ -2,6 +2,6 @@
 
 template<int> struct A
 {
-  ~A() {}      // { dg-error "with" }
+  ~A() {}      // { dg-message "previous" }
   ~A() {}      // { dg-error "cannot be overloaded" }
 };
index a3d23747b48771be95af23648bac8801e1ae3075..b3b1387462d31a612885f85afd38a78779f8eebf 100644 (file)
@@ -31,7 +31,7 @@ class C
 class D
 {
 public:
-  int foo2() {return b;}  // { dg-error "with" } 
+  int foo2() {return b;}  // { dg-message "previous" } 
   int foo2() {return b;}  // { dg-error "overloaded" } 
   int b;
 };
@@ -39,7 +39,7 @@ public:
 class E
 {
 public:
-  int foo2(); // { dg-error "with" } 
+  int foo2(); // { dg-message "previous" } 
   int foo2(); // { dg-error "overloaded" } 
   int b;
 };
index fb1ee429d37fb88f7e894ded928fe608619804ba..23d6ae69f792a9d05bdb0d19af041cd97d14a182 100644 (file)
@@ -8,12 +8,12 @@
 
 class X {
 public:
-  int foo();            // { dg-error "with" }
+  int foo();            // { dg-message "previous" }
   static int foo();    // error: redeclaration// { dg-error "overloaded" } .*
 };
 
 class Y {
 public:
-   static int foo();    // { dg-error "with" }
+   static int foo();    // { dg-message "previous" }
   int foo();           // error: redeclaration// { dg-error "overloaded" } .*
 };
index 0d6ccf669f00f9c013b12642c8aab35a4090910d..2da0b4f9978eff1e9a92e55ad05fb365a0fd67d5 100644 (file)
@@ -1,9 +1,9 @@
 // { dg-do assemble  }
 
 struct S {
-  S(int); // { dg-error "with" }
+  S(int); // { dg-message "previous" }
   S(int); // { dg-error "overloaded" } already declared
 
-  ~S();// { dg-error "with" }
+  ~S();// { dg-message "previous" }
   ~S(); // { dg-error "overloaded" } already declared
 };
index e3355dafc4100660a24454af94def933062c48d1..c2303575dfc6f26bee876799d1d518e0d6776c30 100644 (file)
@@ -1,7 +1,7 @@
 // { dg-do assemble  }
 int main() {
   struct A {
-    void f();                  // { dg-error "with" } already declared
+    void f();                  // { dg-message "previous" } already declared
     void f();                  // { dg-error "overloaded" } already declared
   };
 }
index 73348351f0d494c2d280291365ea9f68567ea664..a8ba371af7a87ffcd11ba099d02e69fccf0ed327 100644 (file)
@@ -23,7 +23,7 @@ template struct B<int>;
 struct C 
 {
   template <class U>
-  void f() {}  // { dg-error "with" } redeclaration
+  void f() {}  // { dg-message "previous" } redeclaration
 
   template <class U>
   void f() {}  // { dg-error "overloaded" } redeclaration
@@ -42,7 +42,7 @@ template struct D<int, double>;
 template <class T, class U>
 struct D2
 {
-  void f(T); // { dg-error "with" } redeclaration 
+  void f(T); // { dg-message "previous" } redeclaration 
   void f(U); // { dg-error "overloaded" } redeclaration 
 };
 
@@ -50,7 +50,7 @@ template struct D2<int, int>;
 
 struct E
 {
-  void f();  // { dg-error "with" } redeclaration
+  void f();  // { dg-message "previous" } redeclaration
   void f(); // { dg-error "overloaded" } redeclaration
 };