===================================================================
@@ -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
===================================================================
@@ -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))