Commit 1092805d by Mark Mitchell Committed by Mark Mitchell

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
parent 4971227d
2003-01-02 Mark Mitchell <mark@codesourcery.com> 2003-01-02 Mark Mitchell <mark@codesourcery.com>
* parser.c (cp_parser_declaration): Accept the __extension__
keyword before the declaration.
PR c++/2843 PR c++/2843
* parser.c (cp_parser_parameter_declaration): Allow attributes to * parser.c (cp_parser_parameter_declaration): Allow attributes to
appear after the declarator. appear after the declarator.
...@@ -15,7 +18,7 @@ ...@@ -15,7 +18,7 @@
(cp_parser_parsing_tentatively): Likewise. (cp_parser_parsing_tentatively): Likewise.
(cp_parser_nested_name_specifier_opt): Reduce the number of calls (cp_parser_nested_name_specifier_opt): Reduce the number of calls
to the cp_lexer_peek_token. to the cp_lexer_peek_token.
* parser.c (cp_parser_sizeof_operand): Do not evaluate the * parser.c (cp_parser_sizeof_operand): Do not evaluate the
expression. expression.
......
...@@ -6533,7 +6533,12 @@ cp_parser_declaration_seq_opt (parser) ...@@ -6533,7 +6533,12 @@ cp_parser_declaration_seq_opt (parser)
explicit-instantiation explicit-instantiation
explicit-specialization explicit-specialization
linkage-specification linkage-specification
namespace-definition */ namespace-definition
GNU extension:
declaration:
__extension__ declaration */
static void static void
cp_parser_declaration (parser) cp_parser_declaration (parser)
...@@ -6541,6 +6546,18 @@ cp_parser_declaration (parser) ...@@ -6541,6 +6546,18 @@ cp_parser_declaration (parser)
{ {
cp_token token1; cp_token token1;
cp_token token2; 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. */ /* Try to figure out what kind of declaration is present. */
token1 = *cp_lexer_peek_token (parser->lexer); token1 = *cp_lexer_peek_token (parser->lexer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment