search.c (check_final_overrider): Use inform instead of error for the diagnostics...
authorVolker Reichelt <v.reichelt@netcologne.de>
Tue, 27 Mar 2018 17:21:20 +0000 (17:21 +0000)
committerVolker Reichelt <reichelt@gcc.gnu.org>
Tue, 27 Mar 2018 17:21:20 +0000 (17:21 +0000)
2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>

        * search.c (check_final_overrider): Use inform instead of error
        for the diagnostics of the overridden functions.  Tweak wording.

        * g++.dg/cpp0x/defaulted2.C: Use dg-message instead of dg-error
        for the diagnostics of overridden functions.  Adjust for new wording.
        * g++.dg/cpp0x/implicit1.C: Likewise.
        * g++.dg/cpp0x/override1.C: Likewise.
        * g++.dg/cpp1y/auto-fn18.C: Likewise.
        * g++.dg/eh/shadow1.C: Likewise.
        * g++.dg/inherit/covariant12.C: Likewise.
        * g++.dg/inherit/covariant14.C: Likewise.
        * g++.dg/inherit/covariant15.C: Likewise.
        * g++.dg/inherit/covariant16.C: Likewise.
        * g++.dg/inherit/covariant22.C: Likewise.
        * g++.dg/inherit/crash3.C: Likewise.
        * g++.dg/inherit/error2.C: Likewise.
        * g++.dg/template/crash100.C: Likewise.
        * g++.old-deja/g++.eh/spec6.C: Likewise.
        * g++.old-deja/g++.mike/p811.C: Likewise.
        * g++.old-deja/g++.other/virtual11.C: Likewise.
        * g++.old-deja/g++.other/virtual4.C: Likewise.

From-SVN: r258898

20 files changed:
gcc/cp/ChangeLog
gcc/cp/search.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/defaulted2.C
gcc/testsuite/g++.dg/cpp0x/implicit1.C
gcc/testsuite/g++.dg/cpp0x/override1.C
gcc/testsuite/g++.dg/cpp1y/auto-fn18.C
gcc/testsuite/g++.dg/eh/shadow1.C
gcc/testsuite/g++.dg/inherit/covariant12.C
gcc/testsuite/g++.dg/inherit/covariant14.C
gcc/testsuite/g++.dg/inherit/covariant15.C
gcc/testsuite/g++.dg/inherit/covariant16.C
gcc/testsuite/g++.dg/inherit/covariant22.C
gcc/testsuite/g++.dg/inherit/crash3.C
gcc/testsuite/g++.dg/inherit/error2.C
gcc/testsuite/g++.dg/template/crash100.C
gcc/testsuite/g++.old-deja/g++.eh/spec6.C
gcc/testsuite/g++.old-deja/g++.mike/p811.C
gcc/testsuite/g++.old-deja/g++.other/virtual11.C
gcc/testsuite/g++.old-deja/g++.other/virtual4.C

index 1f035c30daca99b0b2f39723941b17267014992b..f7f48879b6f7fdd916d49208bb2c55648f6bdf4b 100644 (file)
@@ -1,3 +1,8 @@
+2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
+
+       * search.c (check_final_overrider): Use inform instead of error
+       for the diagnostics of the overridden functions.  Tweak wording.
+
 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/85068
index b4366102e23839ab6474efd8a8228e9f67bc1144..6bf8b0e70dcb935a0f247df45d936dfc8813fd1c 100644 (file)
@@ -1904,7 +1904,7 @@ check_final_overrider (tree overrider, tree basefn)
          if (pedwarn (DECL_SOURCE_LOCATION (overrider), 0,
                       "invalid covariant return type for %q#D", overrider))
            inform (DECL_SOURCE_LOCATION (basefn),
-                   "  overriding %q#D", basefn);
+                   "overridden function is %q#D", basefn);
        }
       else
        fail = 2;
@@ -1918,12 +1918,14 @@ check_final_overrider (tree overrider, tree basefn)
       if (fail == 1)
        {
          error ("invalid covariant return type for %q+#D", overrider);
-         error ("  overriding %q+#D", basefn);
+         inform (DECL_SOURCE_LOCATION (basefn),
+                 "overridden function is %q#D", basefn);
        }
       else
        {
          error ("conflicting return type specified for %q+#D", overrider);
-         error ("  overriding %q+#D", basefn);
+         inform (DECL_SOURCE_LOCATION (basefn),
+                 "overridden function is %q#D", basefn);
        }
       DECL_INVALID_OVERRIDER_P (overrider) = 1;
       return 0;
@@ -1938,7 +1940,8 @@ check_final_overrider (tree overrider, tree basefn)
   if (!comp_except_specs (base_throw, over_throw, ce_derived))
     {
       error ("looser throw specifier for %q+#F", overrider);
-      error ("  overriding %q+#F", basefn);
+      inform (DECL_SOURCE_LOCATION (basefn),
+             "overridden function is %q#F", basefn);
       DECL_INVALID_OVERRIDER_P (overrider) = 1;
       return 0;
     }
@@ -1950,7 +1953,8 @@ check_final_overrider (tree overrider, tree basefn)
       && !tx_safe_fn_type_p (over_type))
     {
       error ("conflicting type attributes specified for %q+#D", overrider);
-      error ("  overriding %q+#D", basefn);
+      inform (DECL_SOURCE_LOCATION (basefn),
+             "overridden function is %q#D", basefn);
       DECL_INVALID_OVERRIDER_P (overrider) = 1;
       return 0;
     }
@@ -1974,21 +1978,26 @@ check_final_overrider (tree overrider, tree basefn)
     {
       if (DECL_DELETED_FN (overrider))
        {
-         error ("deleted function %q+D", overrider);
-         error ("overriding non-deleted function %q+D", basefn);
+         error ("deleted function %q+D overriding non-deleted function",
+                overrider);
+         inform (DECL_SOURCE_LOCATION (basefn),
+                 "overridden function is %qD", basefn);
          maybe_explain_implicit_delete (overrider);
        }
       else
        {
-         error ("non-deleted function %q+D", overrider);
-         error ("overriding deleted function %q+D", basefn);
+         error ("non-deleted function %q+D overriding deleted function",
+                overrider);
+         inform (DECL_SOURCE_LOCATION (basefn),
+                 "overridden function is %qD", basefn);
        }
       return 0;
     }
   if (DECL_FINAL_P (basefn))
     {
-      error ("virtual function %q+D", overrider);
-      error ("overriding final function %q+D", basefn);
+      error ("virtual function %q+D overriding final function", overrider);
+      inform (DECL_SOURCE_LOCATION (basefn),
+             "overridden function is %qD", basefn);
       return 0;
     }
   return 1;
index be9044d644eb18b00918defb95582dd42e970641..292cfedac1e5fa5272ca9abde124a9160431179d 100644 (file)
@@ -1,3 +1,24 @@
+2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
+
+       * g++.dg/cpp0x/defaulted2.C: Use dg-message instead of dg-error
+       for the diagnostics of overridden functions.  Adjust for new wording.
+       * g++.dg/cpp0x/implicit1.C: Likewise.
+       * g++.dg/cpp0x/override1.C: Likewise.
+       * g++.dg/cpp1y/auto-fn18.C: Likewise.
+       * g++.dg/eh/shadow1.C: Likewise.
+       * g++.dg/inherit/covariant12.C: Likewise.
+       * g++.dg/inherit/covariant14.C: Likewise.
+       * g++.dg/inherit/covariant15.C: Likewise.
+       * g++.dg/inherit/covariant16.C: Likewise.
+       * g++.dg/inherit/covariant22.C: Likewise.
+       * g++.dg/inherit/crash3.C: Likewise.
+       * g++.dg/inherit/error2.C: Likewise.
+       * g++.dg/template/crash100.C: Likewise.
+       * g++.old-deja/g++.eh/spec6.C: Likewise.
+       * g++.old-deja/g++.mike/p811.C: Likewise.
+       * g++.old-deja/g++.other/virtual11.C: Likewise.
+       * g++.old-deja/g++.other/virtual4.C: Likewise.
+
 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/85044
index 63be99754cd6d6f7433f3c4844d34f836e5ab55d..45b09c178120e39cbd39d255dec79b0d1fd7785c 100644 (file)
@@ -25,7 +25,7 @@ const B b;                    // { dg-error "uninitialized const" }
 
 struct C
 {
-  virtual void f() = delete;   // { dg-error "overriding deleted" }
+  virtual void f() = delete;   // { dg-message "overridden" }
 };
 
 struct D: public C
index e784ee4e2da2d1a87e359d43300f785b598cbb0f..7fdd262dc58e159a2f8a09ec80bcb5dfdc4c3962 100644 (file)
@@ -7,7 +7,7 @@ class C
 {
   void operator delete (void *); // { dg-message "private" }
 public:
-  virtual ~C();                        // { dg-error "overriding" }
+  virtual ~C();                        // { dg-message "overridden" }
 };
 
 struct D: C { };               // { dg-error "deleted" }
@@ -20,7 +20,7 @@ struct E
 
 struct F
 {
-  virtual ~F();                        // { dg-error "overriding" }
+  virtual ~F();                        // { dg-message "overridden" }
 };
 
 struct G: E, F { };            // { dg-error "deleted" }
index 7686a286fc612cb671b2dbae66f3c167e587f060..543ac840cf221af560eb6161d24f62c93ea15a7a 100644 (file)
@@ -7,7 +7,7 @@ struct B
   virtual void y() final;
 };
 
-void B::y() {} // { dg-error "overriding" }
+void B::y() {} // { dg-message "overridden" }
 
 struct B2
 {
@@ -16,7 +16,7 @@ struct B2
 
 struct D : B
 {
-  virtual void g() override final {} // { dg-error "overriding" }
+  virtual void g() override final {} // { dg-message "overridden" }
   virtual void y() override final {} // { dg-error "virtual" }
 };
 
index 528d3d45ed7a0dee7d2cfd57e1a27257731f4955..1a9296459da28ca78154b863e58af21fafc5e171 100644 (file)
@@ -2,7 +2,7 @@
 
 struct A
 {
-  virtual int f() { return 1; }         // { dg-message "overriding" }
+  virtual int f() { return 1; }         // { dg-message "overridden" }
   virtual auto g() { return 1; } // { dg-error "virtual" }
 };
 
index f0de449564e83e4a5737462e90922ea9141af369..0ba6145ef0c608173070b9a5739625bf11ac72f4 100644 (file)
@@ -13,7 +13,7 @@ struct D : private B
   friend class E;
   
   static B *baz (D *);
-  virtual void V () throw (B);  // { dg-error "overriding" "" { target { ! c++17 } } }
+  virtual void V () throw (B);  // { dg-message "overridden" "" { target { ! c++17 } } }
 };                             // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
                                // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
 struct E : public D
index e7247f2e2f0450af5b3a80934012ad5dedc3a5e9..a340dc9f8873b9ae759163a628124bbed05fb76b 100644 (file)
@@ -9,7 +9,7 @@ struct S;
 
 struct B
 {
-  virtual T *Foo (); // { dg-error "overriding" }
+  virtual T *Foo (); // { dg-message "overridden" }
 };
 
 struct D : B
index 51182437b3c0de6739fafedb082a6bcde09dcea0..ce500bf04594e7911dea9bcbeaca8dc4289e4e8f 100644 (file)
@@ -8,7 +8,7 @@ struct A;
 
 struct B
 {
-  virtual A* foo();  // { dg-error "overriding" }
+  virtual A* foo();  // { dg-message "overridden" }
 };
 
 namespace N
index 4696cc6334ae6c35d16cf1d3ae01c8f4f202372c..ab97ad1b4e344194c8a456c58411da39e6a7577b 100644 (file)
@@ -5,7 +5,7 @@ struct A {};
 
 class B : A
 {
-    virtual A* foo(); /* { dg-error "overriding" } */
+    virtual A* foo(); /* { dg-message "overridden" } */
 };
 
 struct C : virtual B
index de9307e89315664771d4f78a661b6a9115f7e49b..e9cb769e2cf55a7ed9df03a2bc049f4309b5e9da 100644 (file)
@@ -8,7 +8,7 @@ struct A
 
 struct B : virtual A
 {
-  virtual B* foo(); /* { dg-error "overriding" } */
+  virtual B* foo(); /* { dg-message "overridden" } */
 };
 
 struct C : B
index 26c96e6abfc6d41d13a22b7ce237a8c8f7f85304..9826f9d01285e51cbbb0106cc43b1e9fc0a6007a 100644 (file)
@@ -5,7 +5,7 @@ struct A;
 
 struct B
 {
-  virtual A *foo ();   // { dg-error "overriding" }
+  virtual A *foo ();   // { dg-message "overridden" }
 };
 
 struct C : virtual B
index e6094b04a64d198d5d13a981cb3234e47d151aa6..62b9e21f5dd22cb3593a34beb45af0daed589a6b 100644 (file)
@@ -2,7 +2,7 @@
 
 struct A
 {
-  virtual int& foo(); // { dg-error "overriding" }
+  virtual int& foo(); // { dg-message "overridden" }
 };
 
 struct B : A
index 7d5e2e5d689fe940d4e4dc6e40d8b2005344d295..a19c48fc1f948f11a54d5be8db160d9406d3886e 100644 (file)
@@ -3,7 +3,7 @@
 
 struct A
 {
-  virtual A* foo();    // { dg-error "overriding" }
+  virtual A* foo();    // { dg-message "overridden" }
 };
 
 struct B : virtual A;  // { dg-error "before" }
index c67ae2eca38da234047010ad6a79ea1a9839aff3..a85948caf9aba66b765693c745b59b0048baf137 100644 (file)
@@ -7,7 +7,7 @@ class Temp
   public:
   operator T&(void)  { return Val; }
 
-  virtual T& operator=(T a ) // { dg-error "overriding" }
+  virtual T& operator=(T a ) // { dg-message "overridden" }
   {
     Val = a;
     return Val;
index ed485e299ec615f632c3420ed6704043e5460d2e..587eb323992608226db96b31cd7d9fd80b7f8b58 100644 (file)
@@ -81,19 +81,19 @@ struct G : public F, F1 {};
 struct H : private E {};
 struct A
 {
-  virtual void foo() throw();             // { dg-error "" } overriding 
+  virtual void foo() throw();             // { dg-message "" } overridden
   virtual void baz() throw(double, int);
   virtual void bar();
   virtual void qux() throw(E);
-  virtual void qux(int) throw(E const *); // { dg-error "" } overriding (pedantically)
-  virtual void quux() throw(F);           // { dg-error "" } overriding 
-  virtual void quux(int) throw(F *);      // { dg-error "" } overriding 
-  virtual void wibble() throw(E);         // { dg-error "" } overriding 
-  virtual void wobble() throw(E *);       // { dg-error "" } overriding 
-  virtual void wobble(int) throw(E *);    // { dg-error "" } overriding 
+  virtual void qux(int) throw(E const *); // { dg-message "" } overridden (pedantically)
+  virtual void quux() throw(F);           // { dg-message "" } overridden
+  virtual void quux(int) throw(F *);      // { dg-message "" } overridden
+  virtual void wibble() throw(E);         // { dg-message "" } overridden
+  virtual void wobble() throw(E *);       // { dg-message "" } overridden
+  virtual void wobble(int) throw(E *);    // { dg-message "" } overridden
   virtual void wabble(int) throw(E *);
   virtual void wubble(int) throw(E *, H *);
-  virtual ~A() throw();                   // { dg-error "" } overriding
+  virtual ~A() throw();                   // { dg-message "" } overriding
 };
 
 struct B : A
@@ -115,7 +115,7 @@ struct B : A
 struct A1
 {
   virtual void foo() throw(int);
-  virtual void bar() throw();       // { dg-error "" } overriding 
+  virtual void bar() throw();       // { dg-message "" } overridden
   virtual ~A1() throw(int);
 };
 
index bebfe6b7e20561bd2d22bdbccf84d8a7bee2de80..174b16e1eee65ad003f322f395a88e97dd44e6d5 100644 (file)
@@ -512,7 +512,7 @@ class Y {
 public:
     Y() {}
   virtual const char *stringify() = 0;
-    virtual char *stringify2() const = 0; // { dg-error "overriding" } 
+    virtual char *stringify2() const = 0; // { dg-message "overridden" } 
 };
 
 class X: public Y { // { dg-message "defined here" }
index 8b46dc7542126b1f692dd5ad6e2f2a3faf810e2f..172216abc1db5ec017413c9970cda15c17bb0653 100644 (file)
@@ -12,7 +12,7 @@ struct A
 
 struct B
 {
-  virtual void foo ();  // { dg-error "" } of this function
+  virtual void foo ();  // { dg-message "" } of this function
 };
 
 struct C : A , B
index 6933755ab2e1b5d83c89045d048ccf5e23b94e63..8056f26e47305eba54b4f2607ecc22b6f7a0b9a9 100644 (file)
@@ -2,7 +2,7 @@
 
 class A {
 public:
-  virtual int foo() = 0; // { dg-error "" } original definition
+  virtual int foo() = 0; // { dg-message "" } original definition
 };
 
 class B {