diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2019-06-04 23:10:56 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2019-06-04 23:10:56 +0000 |
commit | ad441c263d5aeedc9c152642cba54dcba7799b2b (patch) | |
tree | bb138637ad2e641016f0388fc490098fa7b7f1ec | |
parent | e756e900e911fdbc57cd76d6c12d20a9b1892e55 (diff) | |
download | gcc-ad441c263d5aeedc9c152642cba54dcba7799b2b.zip gcc-ad441c263d5aeedc9c152642cba54dcba7799b2b.tar.gz gcc-ad441c263d5aeedc9c152642cba54dcba7799b2b.tar.bz2 |
decl.c (grokdeclarator): Use declarator->id_loc in two additional places.
/cp
2019-06-04 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Use declarator->id_loc in two
additional places.
/testsuite
2019-06-04 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/concepts/pr60573.C: Test locations too.
* g++.dg/cpp0x/deleted13.C: Likewise.
* g++.dg/parse/error29.C: Likewise.
* g++.dg/parse/qualified4.C: Likewise.
* g++.dg/template/crash96.C Likewise.
* g++.old-deja/g++.brendan/crash22.C Likewise.
* g++.old-deja/g++.brendan/crash23.C Likewise.
* g++.old-deja/g++.law/visibility10.C Likewise.
* g++.old-deja/g++.other/decl5.C: Likewise.
From-SVN: r271928
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/concepts/pr60573.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/deleted13.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/error29.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/qualified4.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/crash96.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.brendan/crash22.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.brendan/crash23.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.law/visibility10.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/decl5.C | 2 |
12 files changed, 43 insertions, 27 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c28faf9..ddd5581 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2019-06-04 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (grokdeclarator): Use declarator->id_loc in two + additional places. + 2019-06-04 Nathan Sidwell <nathan@acm.org> * name-lookup.c (lookup_type_scope_1): Reimplement, handle local diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index bdf397e..23b2a4c 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -11873,6 +11873,8 @@ grokdeclarator (const cp_declarator *declarator, unqualified_id = dname; } + location_t loc = declarator ? declarator->id_loc : input_location; + /* If TYPE is a FUNCTION_TYPE, but the function name was explicitly qualified with a class-name, turn it into a METHOD_TYPE, unless we know that the function is static. We take advantage of this @@ -11898,8 +11900,7 @@ grokdeclarator (const cp_declarator *declarator, friendp = 0; } else - permerror (declarator->id_loc, - "extra qualification %<%T::%> on member %qs", + permerror (loc, "extra qualification %<%T::%> on member %qs", ctype, name); } else if (/* If the qualifying type is already complete, then we @@ -11928,19 +11929,19 @@ grokdeclarator (const cp_declarator *declarator, if (current_class_type && (!friendp || funcdef_flag || initialized)) { - error (funcdef_flag || initialized - ? G_("cannot define member function %<%T::%s%> " - "within %qT") - : G_("cannot declare member function %<%T::%s%> " - "within %qT"), - ctype, name, current_class_type); + error_at (loc, funcdef_flag || initialized + ? G_("cannot define member function %<%T::%s%> " + "within %qT") + : G_("cannot declare member function %<%T::%s%> " + "within %qT"), + ctype, name, current_class_type); return error_mark_node; } } else if (typedef_p && current_class_type) { - error ("cannot declare member %<%T::%s%> within %qT", - ctype, name, current_class_type); + error_at (loc, "cannot declare member %<%T::%s%> within %qT", + ctype, name, current_class_type); return error_mark_node; } } @@ -12053,8 +12054,6 @@ grokdeclarator (const cp_declarator *declarator, } } - location_t loc = declarator ? declarator->id_loc : input_location; - /* If this is declaring a typedef name, return a TYPE_DECL. */ if (typedef_p && decl_context != TYPENAME) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7bcc461..03fbc0b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2019-06-04 Paolo Carlini <paolo.carlini@oracle.com> + + * g++.dg/concepts/pr60573.C: Test locations too. + * g++.dg/cpp0x/deleted13.C: Likewise. + * g++.dg/parse/error29.C: Likewise. + * g++.dg/parse/qualified4.C: Likewise. + * g++.dg/template/crash96.C Likewise. + * g++.old-deja/g++.brendan/crash22.C Likewise. + * g++.old-deja/g++.brendan/crash23.C Likewise. + * g++.old-deja/g++.law/visibility10.C Likewise. + * g++.old-deja/g++.other/decl5.C: Likewise. + 2019-06-04 Bill Schmidt <wschmidt@linux.ibm.com> PR target/78263 diff --git a/gcc/testsuite/g++.dg/concepts/pr60573.C b/gcc/testsuite/g++.dg/concepts/pr60573.C index 5688491..42cda21 100644 --- a/gcc/testsuite/g++.dg/concepts/pr60573.C +++ b/gcc/testsuite/g++.dg/concepts/pr60573.C @@ -9,7 +9,7 @@ struct A void foo(auto); }; - void B::foo(auto) {} // { dg-error "cannot define" } + void B::foo(auto) {} // { dg-error "8:cannot define" } struct X { @@ -21,8 +21,8 @@ struct A }; }; - void Y::Z::foo(auto) {} // { dg-error "cannot define" } + void Y::Z::foo(auto) {} // { dg-error "10:cannot define" } }; - void X::Y::Z::foo(auto) {} // { dg-error "cannot define" } + void X::Y::Z::foo(auto) {} // { dg-error "8:cannot define" } }; diff --git a/gcc/testsuite/g++.dg/cpp0x/deleted13.C b/gcc/testsuite/g++.dg/cpp0x/deleted13.C index f10551f..ce915a8 100644 --- a/gcc/testsuite/g++.dg/cpp0x/deleted13.C +++ b/gcc/testsuite/g++.dg/cpp0x/deleted13.C @@ -8,5 +8,5 @@ struct A struct B { - template<typename> friend void A::foo() = delete; // { dg-error "" } + template<typename> friend void A::foo() = delete; // { dg-error "34:cannot define" } }; diff --git a/gcc/testsuite/g++.dg/parse/error29.C b/gcc/testsuite/g++.dg/parse/error29.C index 2c3a3a7..20cc820 100644 --- a/gcc/testsuite/g++.dg/parse/error29.C +++ b/gcc/testsuite/g++.dg/parse/error29.C @@ -7,7 +7,7 @@ struct A { void operator delete(void *); }; struct B { - friend void A::foo() {} // { dg-error "22:cannot define member function 'A::foo' within 'B'" } - friend void A::operator delete(void*) {} // { dg-error "39:cannot define member function 'A::operator delete' within 'B'" } - friend A::A() {} // { dg-error "15:cannot define member function 'A::A' within 'B'" } + friend void A::foo() {} // { dg-error "15:cannot define member function 'A::foo' within 'B'" } + friend void A::operator delete(void*) {} // { dg-error "15:cannot define member function 'A::operator delete' within 'B'" } + friend A::A() {} // { dg-error "10:cannot define member function 'A::A' within 'B'" } }; diff --git a/gcc/testsuite/g++.dg/parse/qualified4.C b/gcc/testsuite/g++.dg/parse/qualified4.C index c827fcf..71b01af 100644 --- a/gcc/testsuite/g++.dg/parse/qualified4.C +++ b/gcc/testsuite/g++.dg/parse/qualified4.C @@ -2,5 +2,5 @@ // { dg-options "" } struct X { - void X::bar() {} // { dg-error "" } + void X::bar() {} // { dg-error "8:extra qualification" } }; diff --git a/gcc/testsuite/g++.dg/template/crash96.C b/gcc/testsuite/g++.dg/template/crash96.C index 5c2aa99..d1ce2db 100644 --- a/gcc/testsuite/g++.dg/template/crash96.C +++ b/gcc/testsuite/g++.dg/template/crash96.C @@ -2,5 +2,5 @@ template<int> struct A { - template<int> template<int> void A::foo() {} // { dg-error "extra qualification" } + template<int> template<int> void A::foo() {} // { dg-error "36:extra qualification" } }; diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash22.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash22.C index 73831a0..7e56892 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/crash22.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash22.C @@ -6,6 +6,6 @@ struct A { }; struct B { - void A::a1(); // this used to die in chainon(), now grokdeclarator should// { dg-error "" } cannot declare.* - void A::a2(); // should be fixed by the 930629 change.// { dg-error "" } cannot declare.* + void A::a1(); // this used to die in chainon(), now grokdeclarator should// { dg-error "10:cannot declare" } cannot declare.* + void A::a2(); // should be fixed by the 930629 change.// { dg-error "10:cannot declare" } cannot declare.* }; diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash23.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash23.C index 2506869..f09609d 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/crash23.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash23.C @@ -10,6 +10,6 @@ public: void f (); void g (int); }; - void B::f () {}// { dg-error "" } .* - void B::g (int val) {}// { dg-error "" } .* + void B::f () {}// { dg-error "8:cannot define" } .* + void B::g (int val) {}// { dg-error "8:cannot define" } .* }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C index 23505f6..7abb4a8 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C @@ -10,7 +10,7 @@ public: }; class deriv : public base { - void base :: f1();// { dg-error "" } .* + void base :: f1();// { dg-error "8:cannot declare" } .* }; int main () diff --git a/gcc/testsuite/g++.old-deja/g++.other/decl5.C b/gcc/testsuite/g++.old-deja/g++.other/decl5.C index 3ac9137..6d22932 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/decl5.C +++ b/gcc/testsuite/g++.old-deja/g++.other/decl5.C @@ -35,7 +35,7 @@ struct B { struct ::Q { // { dg-error "global qual" } ::Q not a member of B int m; }; - int A::fn() { // { dg-error "cannot define member" } A::fn not a member of B + int A::fn() { // { dg-error "7:cannot define member" } A::fn not a member of B return 0; } void fn(struct ::Q &); |