decl.c (grokdeclarator): Use declarator->id_loc in five error_at calls.
authorPaolo Carlini <paolo.carlini@oracle.com>
Thu, 30 May 2019 07:09:41 +0000 (07:09 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 30 May 2019 07:09:41 +0000 (07:09 +0000)
/cp
2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokdeclarator): Use declarator->id_loc in five
error_at calls.

/testsuite
2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/cpp0x/alias-decl-18.C: Test location too.
* g++.dg/cpp0x/udlit-nofunc-neg.C: Likewise.
* g++.dg/parse/crash59.C: Likewise.
* g++.dg/parse/error38.C: Likewise.
* g++.dg/parse/error39.C: Likewise.
* g++.dg/template/crash31.C: Likewise.
* g++.dg/template/operator8.C: Likewise.
* g++.dg/template/operator9.C: Likewise.

From-SVN: r271762

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/alias-decl-18.C
gcc/testsuite/g++.dg/cpp0x/udlit-nofunc-neg.C
gcc/testsuite/g++.dg/parse/crash59.C
gcc/testsuite/g++.dg/parse/error38.C
gcc/testsuite/g++.dg/parse/error39.C
gcc/testsuite/g++.dg/template/crash31.C
gcc/testsuite/g++.dg/template/operator8.C
gcc/testsuite/g++.dg/template/operator9.C

index 647dd7d5ef6ec001e714c28cc3dd33b19b122a1c..018139b4b4ab2f44cb3c2deefddc7b58cc1eb6bc 100644 (file)
@@ -1,3 +1,8 @@
+2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * decl.c (grokdeclarator): Use declarator->id_loc in five
+       error_at calls.
+
 2019-05-29  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/90598
index 99d75574d51594962c71fba60591718b9a30f3ce..bdf397e5ecb23a4db4bc85e0876892f6327de11c 100644 (file)
@@ -10609,7 +10609,8 @@ grokdeclarator (const cp_declarator *declarator,
      D1 ( parameter-declaration-clause) ...  */
   if (funcdef_flag && innermost_code != cdk_function)
     {
-      error ("function definition does not declare parameters");
+      error_at (declarator->id_loc,
+               "function definition does not declare parameters");
       return error_mark_node;
     }
 
@@ -10617,7 +10618,8 @@ grokdeclarator (const cp_declarator *declarator,
       && innermost_code != cdk_function
       && ! (ctype && !declspecs->any_specifiers_p))
     {
-      error ("declaration of %qD as non-function", dname);
+      error_at (declarator->id_loc,
+               "declaration of %qD as non-function", dname);
       return error_mark_node;
     }
 
@@ -10626,7 +10628,8 @@ grokdeclarator (const cp_declarator *declarator,
       if (UDLIT_OPER_P (dname)
          && innermost_code != cdk_function)
        {
-         error ("declaration of %qD as non-function", dname);
+         error_at (declarator->id_loc,
+                   "declaration of %qD as non-function", dname);
          return error_mark_node;
        }
 
@@ -10634,12 +10637,14 @@ grokdeclarator (const cp_declarator *declarator,
        {
          if (typedef_p)
            {
-             error ("declaration of %qD as %<typedef%>", dname);
+             error_at (declarator->id_loc,
+                       "declaration of %qD as %<typedef%>", dname);
              return error_mark_node;
            }
          else if (decl_context == PARM || decl_context == CATCHPARM)
            {
-             error ("declaration of %qD as parameter", dname);
+             error_at (declarator->id_loc,
+                       "declaration of %qD as parameter", dname);
              return error_mark_node;
            }
        }
index 60dc28209e927c6cf5d5e60010d36dbc868e4e62..f25e181bfbf978db0500882a5a5133ed2a9759e8 100644 (file)
@@ -1,3 +1,14 @@
+2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * g++.dg/cpp0x/alias-decl-18.C: Test location too.
+       * g++.dg/cpp0x/udlit-nofunc-neg.C: Likewise.
+       * g++.dg/parse/crash59.C: Likewise.
+       * g++.dg/parse/error38.C: Likewise.
+       * g++.dg/parse/error39.C: Likewise.
+       * g++.dg/template/crash31.C: Likewise.
+       * g++.dg/template/operator8.C: Likewise.
+       * g++.dg/template/operator9.C: Likewise.
+
 2019-05-29  Bill Schmidt  <wschmidt@linux.ibm.com>
 
        * gcc.target/powerpc/notoc-direct-1.c: New.
index 199b05483f8f54ac6f53c766965c0ed0dc7010bc..1e165d88d8d9ecd29e9d787a2ead3614523a7885 100644 (file)
@@ -5,5 +5,6 @@ template<typename Z> using ::T = void(int n); // { dg-error "" }
 template<typename Z> using operator int = void(int n); // { dg-error "" }
 template<typename Z> using typename U = void; // { dg-error "" }
 template<typename Z> using typename ::V = void(int n); // { dg-error "" }
-template<typename Z> using typename ::operator bool = void(int n); // { dg-error "" }
+template<typename Z> using typename ::operator bool = void(int n); // { dg-error "39:declaration" }
+// { dg-error "expected" "" { target *-*-* } .-1 }
 using foo __attribute__((aligned(4)) = int; // { dg-error "" }
index 89c7581ff113b9a2f0db12cde1c8900774017fd0..861a77ce7bf5ead68692880d01cf4f1167cbba85 100644 (file)
@@ -3,7 +3,7 @@
 // Test user-defined literals.
 // Test error on non-function declaration.
 
-double operator"" _baddecl; // { dg-error "as non-function" }
+double operator"" _baddecl; // { dg-error "8:declaration of .operator\"\"_baddecl. as non-function" }
 
 template<char...>
-  int operator"" _badtmpldecl; // { dg-error "as non-function" }
+  int operator"" _badtmpldecl; // { dg-error "7:declaration of .operator\"\"_badtmpldecl. as non-function" }
index e5e62986a3e74f8acf16cc3c78620853f520ea22..7e90dde6c8aed3434c4d5e5624a0cdceaa580d62 100644 (file)
@@ -1,3 +1,4 @@
 // PR c++/53003
 
-struct A{ void a{} return b  // { dg-error "function definition|expected" }
+struct A{ void a{} return b  // { dg-error "16:function definition" }
+// { dg-error "expected" "" { target *-*-* } .-1 }
index 63162a8ad84d8ebd5fb54ad63c4442cac0127e12..2c64ed43b43f456adec290631799460fe6ef4a97 100644 (file)
@@ -1,3 +1,3 @@
 // PR c++/29003
 
-typedef int operator !(); // { dg-error "declaration" }
+typedef int operator !(); // { dg-error "13:declaration" }
index 431571c12e38b53e28a1712f128c8f61691f2c84..8710e19f87c89c2449f29bed4e21426191892031 100644 (file)
@@ -1,6 +1,6 @@
 // PR c++/41769
 
-void f(void operator+()); // { dg-error "declaration" }
+void f(void operator+()); // { dg-error "13:declaration" }
 
 void g()
 {
@@ -8,7 +8,7 @@ void g()
     {
 
     }
-  catch(void operator+()) // { dg-error "declaration" }
+  catch(void operator+()) // { dg-error "14:declaration" }
     {
     }
 }
index 2269f47eaadfee7507ac68829a08c5689d98ebbb..c8732c81f66ae33d4f0f441a0b525e8e1192d815 100644 (file)
@@ -1,3 +1,4 @@
 // PR c++/19063
 
-template<operator< struct A {}; // { dg-error "" }
+template<operator< struct A {}; // { dg-error "10:declaration" }
+// { dg-error "expected|extra" "" { target *-*-* } .-1 }
index 52f22188ddbcbc01dd4aeac0ad41c35d7faaeaaf..adadc588579d60ab293a8566fcd687e7fe6dfb7d 100644 (file)
@@ -2,5 +2,6 @@
 
 struct A
 {
-    template<operator+> void foo() {}   // { dg-error "identifier|parameter|template arguments" }
+    template<operator+> void foo() {}   // { dg-error "14:declaration" }
+  // { dg-error "expected|template" "" { target *-*-* } .-1 }
 };
index d4ebad3aa13256f7500292e7704ab3047cd64cd3..c1303efa4cf86fb0856275eba8bc38cedfbbe192 100644 (file)
@@ -1,6 +1,7 @@
 //PR c++/27670
 
-template<operator+> void foo(); // { dg-error "before|parameter|template" }
+template<operator+> void foo(); // { dg-error "10:declaration" }
+// { dg-error "expected|template" "" { target *-*-* } .-1 }
 
 void bar()
 {