re PR c++/18698 (Error message using "using" for code not using "using" ;-))

PR c++/18698
        * decl2.c (grokfield): Only try to treat the decl as an access
        declaration if the scope is a class.

From-SVN: r115095
This commit is contained in:
Jason Merrill 2006-06-30 14:27:18 -04:00 committed by Jason Merrill
parent 1d737af9c8
commit 444762dfeb
3 changed files with 21 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2006-06-30 Jason Merrill <jason@redhat.com>
PR c++/18698
* decl2.c (grokfield): Only try to treat the decl as an access
declaration if the scope is a class.
2006-06-29 Jason Merrill <jason@redhat.com>
PR c++/26905

View File

@ -769,6 +769,8 @@ grokfield (const cp_declarator *declarator,
if (!declspecs->any_specifiers_p
&& declarator->kind == cdk_id
&& declarator->u.id.qualifying_scope
&& TYPE_P (declarator->u.id.qualifying_scope)
&& IS_AGGR_TYPE (declarator->u.id.qualifying_scope)
&& TREE_CODE (declarator->u.id.unqualified_name) == IDENTIFIER_NODE)
/* Access declaration */
return do_class_using_decl (declarator->u.id.qualifying_scope,

View File

@ -0,0 +1,13 @@
// PR c++/18698
// The compiler was giving an error message for invalid syntax
// that irrelevantly talked about using-declarations.
template<int> struct A
{
::A~(); // { dg-bogus "using-declaration" }
};
// Instead of the bogus error we get 3 separate errors.
// { dg-error "no type" "" { target *-*-* } 5 }
// { dg-error "::" "" { target *-*-* } 5 }
// { dg-error "~" "" { target *-*-* } 5 }