parser.c (cp_parser_declaration): Accept the __extension__ keyword before the declaration.

* parser.c (cp_parser_declaration): Accept the __extension__
	keyword before the declaration.

From-SVN: r60802
This commit is contained in:
Mark Mitchell 2003-01-02 20:30:45 +00:00 committed by Mark Mitchell
parent 4971227d25
commit 1092805d38
2 changed files with 22 additions and 2 deletions

View file

@ -1,5 +1,8 @@
2003-01-02 Mark Mitchell <mark@codesourcery.com>
* parser.c (cp_parser_declaration): Accept the __extension__
keyword before the declaration.
PR c++/2843
* parser.c (cp_parser_parameter_declaration): Allow attributes to
appear after the declarator.
@ -15,7 +18,7 @@
(cp_parser_parsing_tentatively): Likewise.
(cp_parser_nested_name_specifier_opt): Reduce the number of calls
to the cp_lexer_peek_token.
* parser.c (cp_parser_sizeof_operand): Do not evaluate the
expression.

View file

@ -6533,7 +6533,12 @@ cp_parser_declaration_seq_opt (parser)
explicit-instantiation
explicit-specialization
linkage-specification
namespace-definition */
namespace-definition
GNU extension:
declaration:
__extension__ declaration */
static void
cp_parser_declaration (parser)
@ -6541,6 +6546,18 @@ cp_parser_declaration (parser)
{
cp_token token1;
cp_token token2;
int saved_pedantic;
/* Check for the `__extension__' keyword. */
if (cp_parser_extension_opt (parser, &saved_pedantic))
{
/* Parse the qualified declaration. */
cp_parser_declaration (parser);
/* Restore the PEDANTIC flag. */
pedantic = saved_pedantic;
return;
}
/* Try to figure out what kind of declaration is present. */
token1 = *cp_lexer_peek_token (parser->lexer);