re PR c++/29138 (access declarations don't work for classes)
authorMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 3 Oct 2006 18:39:32 +0000 (18:39 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 3 Oct 2006 18:39:32 +0000 (18:39 +0000)
PR c++/29138
* decl2.c (grokfield): Don't handle access declarations here.
* parser.c (cp_parser_using_declaration): Handle access
declarations too.
(cp_parser_block_declaration): Adjust calls to
cp_parser_using_declaration.
(cp_parser_member_declaration): Likewise.  Use
cp_parser_using_declaration to look for access_declarations.
PR c++/29138
* g++.dg/inherit/access8.C: New test.
* g++.dg/template/dtor4.C: Tweak error messages.

From-SVN: r117411

gcc/cp/parser.c

index cb2346a3da3f183a6444eae889d9e50c7f69bd56..05151cd300b763055f26cfa07b7582cd6301889c 100644 (file)
@@ -3632,6 +3632,10 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
        {
          /* Grab the nested-name-specifier and continue the loop.  */
          cp_parser_pre_parsed_nested_name_specifier (parser);
+         if (is_declaration
+             && TREE_CODE (parser->scope) == TYPENAME_TYPE)
+           parser->scope = resolve_typename_type (parser->scope,
+                                                  /*only_current_p=*/false);
          success = true;
          continue;
        }