diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1cc6dc08c4d..0fd719d9e77 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-05-19 Jakub Jelinek + + PR c++/21495 + * decl.c (grokdeclarator): Fix "storage class specified for" + error reporting. + 2005-05-19 Kazu Hirata * parser.c: Fix comment typos. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 529cfd51b00..eb8db9121c8 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -7002,30 +7002,7 @@ grokdeclarator (const cp_declarator *declarator, else { if (decl_context == FIELD) - { - tree tmp = NULL_TREE; - int op = 0; - - if (declarator) - { - /* Avoid trying to get an operand off an identifier node. */ - if (declarator->kind != cdk_id) - tmp = declarator->declarator->u.id.unqualified_name; - else - tmp = declarator->u.id.unqualified_name; - op = IDENTIFIER_OPNAME_P (tmp); - if (IDENTIFIER_TYPENAME_P (tmp)) - { - if (is_typename_at_global_scope (tmp)) - name = IDENTIFIER_POINTER (tmp); - else - name = ""; - } - } - error ("storage class specified for %s %qs", - op ? "member operator" : "field", - name); - } + error ("storage class specified for %qs", name); else { if (decl_context == PARM || decl_context == CATCHPARM) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6f9116146ed..19435c3d7cf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-05-19 Jakub Jelinek + + PR c++/21495 + * g++.dg/parse/extern1.C: New test. + * g++.dg/tls/diag-2.C: Adjust expected error message wording. + 2005-05-19 Eric Botcazou * gcc.dg/c99-math.h: New. diff --git a/gcc/testsuite/g++.dg/parse/extern1.C b/gcc/testsuite/g++.dg/parse/extern1.C new file mode 100644 index 00000000000..cc95fa69468 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/extern1.C @@ -0,0 +1,14 @@ +// PR c++/21495 +// { dg-do compile } + +class A +{ + extern void *copy (void) // { dg-error "storage class specified" } + { + return 0; + } + extern A &operator= (const A &) // { dg-error "storage class specified" } + { + return *this; + } +}; diff --git a/gcc/testsuite/g++.dg/tls/diag-2.C b/gcc/testsuite/g++.dg/tls/diag-2.C index 6cd539d6fbe..293409db9ce 100644 --- a/gcc/testsuite/g++.dg/tls/diag-2.C +++ b/gcc/testsuite/g++.dg/tls/diag-2.C @@ -21,5 +21,5 @@ __thread void f4 () { } /* { dg-error "invalid for function" } */ void bar(__thread int p1); /* { dg-error "(invalid in parameter)|(specified for parameter)" } */ struct A { - __thread int i; /* { dg-error "specified for field" } */ + __thread int i; /* { dg-error "storage class specified" } */ };