From a4404ff533a012bcec898aa14ac7ab14257edb97 Mon Sep 17 00:00:00 2001 From: Mike Stump Date: Sun, 13 Feb 2011 10:28:45 +0000 Subject: [PATCH] parser.h: Add arguments to all plugins. objcp: * plugin/parser.h: Add arguments to all plugins. cp: * parser.c (cp_parser_primary_expression): Add arguments to all the plugins. From-SVN: r170105 --- gcc/cp/ChangeLog | 1 + gcc/cp/parser.c | 19 ++++++++++--------- gcc/objcp/ChangeLog | 1 + gcc/objcp/plugin/parser.h | 24 ++++++++++++------------ 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 806c770b5d5..74f460eedcb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,6 @@ 2011-02-13 Mike Stump + * parser.c (cp_parser_primary_expression): Add arguments to all the plugins. * lex.c: Plugify. * Make-lang.in (objcp/plugin/lex.h): Likewise. * Make-lang.in (cp/parser.o): Move c-family/c-objc.h dependancy diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index ecdc66c9a86..b6541cb4c93 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -3671,11 +3671,11 @@ cp_parser_primary_expression (cp_parser *parser, } case CPP_OPEN_SQUARE: - PLUGIN_PRIMARY_EXPRESSION_3(parser); + PLUGIN_PRIMARY_EXPRESSION_3 (parser); maybe_warn_cpp0x (CPP0X_LAMBDA_EXPR); return cp_parser_lambda_expression (parser); - PLUGIN_PRIMARY_EXPRESSION_2(parser, cp_parser_error) + PLUGIN_PRIMARY_EXPRESSION_2 (parser, cp_parser_error) case CPP_KEYWORD: switch (token->keyword) @@ -3806,7 +3806,7 @@ cp_parser_primary_expression (cp_parser *parser, case RID_IS_LITERAL_TYPE: return cp_parser_trait_expr (parser, token->keyword); - PLUGIN_PRIMARY_EXPRESSION_1(parser) + PLUGIN_PRIMARY_EXPRESSION_1 (parser) case RID_TEMPLATE: if (parser->in_function_body @@ -9401,7 +9401,7 @@ cp_parser_declaration (cp_parser* parser) else if (token1.keyword == RID_INLINE && token2.keyword == RID_NAMESPACE) cp_parser_namespace_definition (parser); - PLUGIN_DECLARATION + PLUGIN_DECLARATION (token1, attributes) /* We must have either a block declaration or a function definition. */ else @@ -12800,7 +12800,7 @@ cp_parser_simple_type_specifier (cp_parser* parser, if (type && type != error_mark_node) { - PLUGIN_SIMPLE_TYPE_SPECIFIER; + PLUGIN_SIMPLE_TYPE_SPECIFIER (parser, type, decl_specs); /* There is no valid C++ program where a non-template type is followed by a "<". That usually indicates that the user @@ -12876,11 +12876,11 @@ cp_parser_nonclass_name (cp_parser* parser) /* Look up the type-name. */ type_decl = cp_parser_lookup_name_simple (parser, identifier, token->location); - PLUGIN_NONCLASS_NAME1; + PLUGIN_NONCLASS_NAME1 (parser, type_decl, identifier); /* Issue an error if we did not find a type-name. */ if (TREE_CODE (type_decl) != TYPE_DECL - PLUGIN_NONCLASS_NAME) + PLUGIN_NONCLASS_NAME (parser, type_decl, cp_lexer_peek_token)) { if (!cp_parser_simulate_error (parser)) cp_parser_name_lookup_error (parser, identifier, type_decl, @@ -16724,7 +16724,7 @@ cp_parser_class_name (cp_parser *parser, else if (TREE_CODE (decl) != TYPE_DECL || TREE_TYPE (decl) == error_mark_node || !MAYBE_CLASS_TYPE_P (TREE_TYPE (decl)) - PLUGIN_CLASS_NAME) + PLUGIN_CLASS_NAME (parser, cp_lexer_peek_token, CPP_DOT)) decl = error_mark_node; if (decl == error_mark_node) @@ -17585,7 +17585,8 @@ cp_parser_member_declaration (cp_parser* parser) return; } - PLUGIN_MEMBER_DECLARATION; + PLUGIN_MEMBER_DECLARATION (parser, cp_lexer_next_token_is_keyword, + finish_member_declaration); /* If the next token is `static_assert' we have a static assertion. */ if (cp_lexer_next_token_is_keyword (parser->lexer, RID_STATIC_ASSERT)) diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog index 92f6b7d32e1..1100daabaf2 100644 --- a/gcc/objcp/ChangeLog +++ b/gcc/objcp/ChangeLog @@ -1,5 +1,6 @@ 2011-02-13 Mike Stump + * plugin/parser.h: Add arguments to all plugins. * plugin/lex.h: Plugify. 2011-02-12 Mike Stump diff --git a/gcc/objcp/plugin/parser.h b/gcc/objcp/plugin/parser.h index e41e30ba67a..a8344543389 100644 --- a/gcc/objcp/plugin/parser.h +++ b/gcc/objcp/plugin/parser.h @@ -127,7 +127,7 @@ static tree cp_parser_objc_struct_declaration break;@) -#define PLUGIN_DECLARATION @( +#define PLUGIN_DECLARATION(token1, attributes) @( /* Objective-C++ declaration/definition. */ else if (c_dialect_objc () && OBJC_IS_AT_KEYWORD (token1.keyword)) cp_parser_objc_declaration (parser, NULL_TREE); @@ -136,7 +136,7 @@ static tree cp_parser_objc_struct_declaration && cp_parser_objc_valid_prefix_attributes (parser, &attributes)) cp_parser_objc_declaration (parser, attributes);@) -#define PLUGIN_SIMPLE_TYPE_SPECIFIER @( +#define PLUGIN_SIMPLE_TYPE_SPECIFIER(parser, type, decl_specs) @( do { /* See if TYPE is an Objective-C type, and if so, parse and accept any protocol references following it. Do this before @@ -160,7 +160,7 @@ static tree cp_parser_objc_struct_declaration } while (0)@) -#define PLUGIN_NONCLASS_NAME1 @( +#define PLUGIN_NONCLASS_NAME1(parser, type_decl, identifier) @( do { if (TREE_CODE (type_decl) != TYPE_DECL && (objc_is_id (identifier) || objc_is_class_name (identifier))) @@ -173,7 +173,7 @@ static tree cp_parser_objc_struct_declaration } } while (0)@) -#define PLUGIN_NONCLASS_NAME @( +#define PLUGIN_NONCLASS_NAME(parser, type_decl, cp_lexer_peek_token) @( /* In Objective-C, we have the complication that class names are normally type names and start declarations (eg, the "NSObject" in "NSObject *object;"), but can be used in an @@ -183,14 +183,14 @@ static tree cp_parser_objc_struct_declaration || (objc_is_class_name (TREE_TYPE (type_decl)) && cp_lexer_peek_token (parser->lexer)->type == CPP_DOT)@) -#define PLUGIN_CLASS_NAME @( +#define PLUGIN_CLASS_NAME(parser, cp_lexer_peek_token, CPP_DOT) @( /* In Objective-C 2.0, a classname followed by '.' starts a dot-syntax expression, and it's not a type-name. */ || (c_dialect_objc () && cp_lexer_peek_token (parser->lexer)->type == CPP_DOT && objc_is_class_name (decl))@) -#define PLUGIN_MEMBER_DECLARATION @( +#define PLUGIN_MEMBER_DECLARATION(parser, cp_lexer_next_token_is_keyword, finish_member_declaration) @( do { /* Check for @defs. */ if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AT_DEFS)) @@ -217,11 +217,11 @@ static tree cp_parser_objc_struct_declaration #define PLUGIN_PRIMARY_EXPRESSION(parser, decl, cp_lexer_consume_token, cp_lexer_peek_token) #define PLUGIN_TOKEN_STARTS_CAST_EXPR #define PLUGIN_STATEMENT -#define PLUGIN_DECLARATION -#define PLUGIN_SIMPLE_TYPE_SPECIFIER -#define PLUGIN_NONCLASS_NAME1 -#define PLUGIN_NONCLASS_NAME -#define PLUGIN_CLASS_NAME -#define PLUGIN_MEMBER_DECLARATION +#define PLUGIN_DECLARATION(token1, attributes) +#define PLUGIN_SIMPLE_TYPE_SPECIFIER(parser, type, decl_specs) +#define PLUGIN_NONCLASS_NAME1(parser, type_decl, identifier) +#define PLUGIN_NONCLASS_NAME(parser, type_decl, cp_lexer_peek_token) +#define PLUGIN_CLASS_NAME(parser, cp_lexer_peek_token, CPP_DOT) +#define PLUGIN_MEMBER_DECLARATION(parser, cp_lexer_next_token_is_keyword, finish_member_declaration) #endif