From patchwork Sun Feb 13 10:30:06 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Stump X-Patchwork-Id: 82977 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id F131FB7123 for ; Sun, 13 Feb 2011 21:30:18 +1100 (EST) Received: (qmail 12295 invoked by alias); 13 Feb 2011 10:30:16 -0000 Received: (qmail 12278 invoked by uid 22791); 13 Feb 2011 10:30:15 -0000 X-SWARE-Spam-Status: No, hits=-0.5 required=5.0 tests=AWL, BAYES_50, FREEMAIL_FROM, NORMAL_HTTP_TO_IP, RCVD_IN_DNSWL_NONE, RFC_ABUSE_POST, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from qmta14.westchester.pa.mail.comcast.net (HELO qmta14.westchester.pa.mail.comcast.net) (76.96.59.212) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 13 Feb 2011 10:30:10 +0000 Received: from omta01.westchester.pa.mail.comcast.net ([76.96.62.11]) by qmta14.westchester.pa.mail.comcast.net with comcast id 7NVS1g0010EZKEL5ENW9bf; Sun, 13 Feb 2011 10:30:09 +0000 Received: from up.mrs.kithrup.com ([24.4.193.8]) by omta01.westchester.pa.mail.comcast.net with comcast id 7NW81g00B0BKwT43MNW9ai; Sun, 13 Feb 2011 10:30:09 +0000 From: Mike Stump Subject: Add arguments to plug functions Date: Sun, 13 Feb 2011 02:30:06 -0800 Message-Id: <9F48F549-7FBC-4221-91C1-CAA94A29B8F1@comcast.net> To: GCC Patches Mime-Version: 1.0 (Apple Message framework v1082) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org objcp: * plugin/parser.h: Add arguments to all plugins. cp: * parser.c (cp_parser_primary_expression): Add arguments to all the plugins. objcp: * plugin/parser.h: Add arguments to all plugins. cp: * parser.c (cp_parser_primary_expression): Add arguments to all the plugins. Index: objcp/plugin/parser.h =================================================================== --- objcp/plugin/parser.h (revision 170104) +++ objcp/plugin/parser.h (working copy) @@ -127,7 +127,7 @@ 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 @@ && 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 @@ } 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 @@ } } 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 @@ || (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 @@ #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 Index: cp/parser.c =================================================================== --- cp/parser.c (revision 170104) +++ cp/parser.c (working copy) @@ -3671,11 +3671,11 @@ } 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 @@ 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 @@ 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 @@ 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 @@ /* 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 @@ 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 @@ 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))