Lines Matching refs:parser

1967 cp_parser_parsing_tentatively (cp_parser* parser)  in cp_parser_parsing_tentatively()  argument
1969 return parser->context->next != NULL; in cp_parser_parsing_tentatively()
1995 cp_parser_error (cp_parser* parser, const char* message) in cp_parser_error() argument
1997 if (!cp_parser_simulate_error (parser)) in cp_parser_error()
1999 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_error()
2007 cp_parser_skip_to_pragma_eol (parser, token); in cp_parser_error()
2026 cp_parser_name_lookup_error (cp_parser* parser, in cp_parser_name_lookup_error() argument
2035 if (parser->scope && parser->scope != global_namespace) in cp_parser_name_lookup_error()
2037 parser->scope, name); in cp_parser_name_lookup_error()
2038 else if (parser->scope == global_namespace) in cp_parser_name_lookup_error()
2040 else if (parser->object_scope in cp_parser_name_lookup_error()
2041 && !CLASS_TYPE_P (parser->object_scope)) in cp_parser_name_lookup_error()
2043 name, parser->object_scope); in cp_parser_name_lookup_error()
2044 else if (parser->object_scope) in cp_parser_name_lookup_error()
2046 parser->object_scope, name); in cp_parser_name_lookup_error()
2050 else if (parser->scope && parser->scope != global_namespace) in cp_parser_name_lookup_error()
2051 error ("%<%D::%D%> %s", parser->scope, name, desired); in cp_parser_name_lookup_error()
2052 else if (parser->scope == global_namespace) in cp_parser_name_lookup_error()
2063 cp_parser_simulate_error (cp_parser* parser) in cp_parser_simulate_error() argument
2065 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_simulate_error()
2067 parser->context->status = CP_PARSER_STATUS_KIND_ERROR; in cp_parser_simulate_error()
2121 cp_parser_check_type_definition (cp_parser* parser) in cp_parser_check_type_definition() argument
2124 if (parser->type_definition_forbidden_message) in cp_parser_check_type_definition()
2128 error ("%s", parser->type_definition_forbidden_message); in cp_parser_check_type_definition()
2166 cp_parser_check_for_invalid_template_id (cp_parser* parser, in cp_parser_check_for_invalid_template_id() argument
2171 if (cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_check_for_invalid_template_id()
2180 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_check_for_invalid_template_id()
2181 start = cp_lexer_token_position (parser->lexer, true); in cp_parser_check_for_invalid_template_id()
2183 cp_lexer_consume_token (parser->lexer); in cp_parser_check_for_invalid_template_id()
2185 cp_parser_enclosed_template_argument_list (parser); in cp_parser_check_for_invalid_template_id()
2189 cp_lexer_purge_tokens_after (parser->lexer, start); in cp_parser_check_for_invalid_template_id()
2199 cp_parser_non_integral_constant_expression (cp_parser *parser, in cp_parser_non_integral_constant_expression() argument
2202 parser->non_integral_constant_expression_p = true; in cp_parser_non_integral_constant_expression()
2203 if (parser->integral_constant_expression_p) in cp_parser_non_integral_constant_expression()
2205 if (!parser->allow_non_integral_constant_expression_p) in cp_parser_non_integral_constant_expression()
2221 cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree scope, tree id) in cp_parser_diagnose_invalid_type_name() argument
2225 old_scope = parser->scope; in cp_parser_diagnose_invalid_type_name()
2226 parser->scope = scope; in cp_parser_diagnose_invalid_type_name()
2227 decl = cp_parser_lookup_name_simple (parser, id); in cp_parser_diagnose_invalid_type_name()
2228 parser->scope = old_scope; in cp_parser_diagnose_invalid_type_name()
2238 else if (!parser->scope) in cp_parser_diagnose_invalid_type_name()
2285 else if (parser->scope != error_mark_node) in cp_parser_diagnose_invalid_type_name()
2287 if (TREE_CODE (parser->scope) == NAMESPACE_DECL) in cp_parser_diagnose_invalid_type_name()
2289 id, parser->scope); in cp_parser_diagnose_invalid_type_name()
2290 else if (TYPE_P (parser->scope)) in cp_parser_diagnose_invalid_type_name()
2291 error ("%qE in class %qT does not name a type", id, parser->scope); in cp_parser_diagnose_invalid_type_name()
2295 cp_parser_commit_to_tentative_parse (parser); in cp_parser_diagnose_invalid_type_name()
2309 cp_parser_parse_and_diagnose_invalid_type_name (cp_parser *parser) in cp_parser_parse_and_diagnose_invalid_type_name() argument
2313 cp_parser_parse_tentatively (parser); in cp_parser_parse_and_diagnose_invalid_type_name()
2314 id = cp_parser_id_expression (parser, in cp_parser_parse_and_diagnose_invalid_type_name()
2323 if (!cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_parse_and_diagnose_invalid_type_name()
2324 || (parser->scope && TYPE_P (parser->scope) in cp_parser_parse_and_diagnose_invalid_type_name()
2325 && dependent_type_p (parser->scope)) in cp_parser_parse_and_diagnose_invalid_type_name()
2328 cp_parser_abort_tentative_parse (parser); in cp_parser_parse_and_diagnose_invalid_type_name()
2331 if (!cp_parser_parse_definitely (parser)) in cp_parser_parse_and_diagnose_invalid_type_name()
2335 cp_parser_diagnose_invalid_type_name (parser, parser->scope, id); in cp_parser_parse_and_diagnose_invalid_type_name()
2338 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_parse_and_diagnose_invalid_type_name()
2348 cp_parser_skip_to_closing_parenthesis (cp_parser *parser, in cp_parser_skip_to_closing_parenthesis() argument
2357 && cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_skip_to_closing_parenthesis()
2362 cp_token * token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_closing_parenthesis()
2399 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_parenthesis()
2409 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_parenthesis()
2418 cp_parser_skip_to_end_of_statement (cp_parser* parser) in cp_parser_skip_to_end_of_statement() argument
2424 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_end_of_statement()
2463 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_statement()
2476 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_statement()
2486 cp_objc_property_reference_prefix (cp_parser *parser, tree type) in cp_objc_property_reference_prefix() argument
2488 return c_dialect_objc () && cp_lexer_peek_token (parser->lexer)->type == CPP_DOT in cp_objc_property_reference_prefix()
2496 objc_cp_parse_property_decl (cp_parser *parser) in objc_cp_parse_property_decl() argument
2501 cp_parser_decl_specifier_seq (parser, in objc_cp_parse_property_decl()
2506 while (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in objc_cp_parse_property_decl()
2511 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in objc_cp_parse_property_decl()
2521 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in objc_cp_parse_property_decl()
2527 cp_lexer_consume_token (parser->lexer); /* Eat ';'. */ in objc_cp_parse_property_decl()
2534 objc_cp_parser_at_property (cp_parser *parser) in objc_cp_parser_at_property() argument
2540 cp_lexer_consume_token (parser->lexer); in objc_cp_parser_at_property()
2541 token = cp_lexer_peek_token (parser->lexer); in objc_cp_parser_at_property()
2544 cp_lexer_consume_token (parser->lexer); in objc_cp_parser_at_property()
2550 node = cp_parser_identifier (parser); in objc_cp_parser_at_property()
2560 token = cp_lexer_consume_token (parser->lexer); in objc_cp_parser_at_property()
2564 tree attr_ident = cp_parser_objc_selector (parser); in objc_cp_parser_at_property()
2572 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in objc_cp_parser_at_property()
2573 cp_lexer_consume_token (parser->lexer); in objc_cp_parser_at_property()
2595 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA) in objc_cp_parser_at_property()
2596 && cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN) in objc_cp_parser_at_property()
2597 && cp_lexer_next_token_is_not (parser->lexer, CPP_EOF)) in objc_cp_parser_at_property()
2600 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in objc_cp_parser_at_property()
2601 cp_lexer_consume_token (parser->lexer); in objc_cp_parser_at_property()
2602 token = cp_lexer_peek_token (parser->lexer); in objc_cp_parser_at_property()
2609 cp_lexer_consume_token (parser->lexer); in objc_cp_parser_at_property()
2611 objc_cp_parse_property_decl (parser); in objc_cp_parser_at_property()
2620 cp_parser_consume_semicolon_at_end_of_statement (cp_parser *parser) in cp_parser_consume_semicolon_at_end_of_statement() argument
2623 if (!cp_parser_require (parser, CPP_SEMICOLON, "`;'")) in cp_parser_consume_semicolon_at_end_of_statement()
2627 cp_parser_skip_to_end_of_statement (parser); in cp_parser_consume_semicolon_at_end_of_statement()
2629 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_consume_semicolon_at_end_of_statement()
2630 cp_lexer_consume_token (parser->lexer); in cp_parser_consume_semicolon_at_end_of_statement()
2638 cp_parser_skip_to_end_of_block_or_statement (cp_parser* parser) in cp_parser_skip_to_end_of_block_or_statement() argument
2644 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_end_of_block_or_statement()
2677 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_block_or_statement()
2685 cp_parser_skip_to_closing_brace (cp_parser *parser) in cp_parser_skip_to_closing_brace() argument
2691 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_closing_brace()
2718 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_brace()
2727 cp_parser_skip_to_pragma_eol (cp_parser* parser, cp_token *pragma_tok) in cp_parser_skip_to_pragma_eol() argument
2731 parser->lexer->in_pragma = false; in cp_parser_skip_to_pragma_eol()
2734 token = cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_pragma_eol()
2738 cp_lexer_purge_tokens_after (parser->lexer, pragma_tok); in cp_parser_skip_to_pragma_eol()
2745 cp_parser_require_pragma_eol (cp_parser *parser, cp_token *pragma_tok) in cp_parser_require_pragma_eol() argument
2747 parser->lexer->in_pragma = false; in cp_parser_require_pragma_eol()
2748 if (!cp_parser_require (parser, CPP_PRAGMA_EOL, "end of line")) in cp_parser_require_pragma_eol()
2749 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_require_pragma_eol()
2757 cp_parser_make_typename_type (cp_parser *parser, tree scope, tree id) in cp_parser_make_typename_type() argument
2765 cp_parser_diagnose_invalid_type_name (parser, scope, id); in cp_parser_make_typename_type()
2777 cp_parser *parser; in cp_parser_new() local
2790 parser = GGC_CNEW (cp_parser); in cp_parser_new()
2791 parser->lexer = lexer; in cp_parser_new()
2792 parser->context = cp_parser_context_new (NULL); in cp_parser_new()
2795 parser->allow_gnu_extensions_p = 1; in cp_parser_new()
2799 parser->greater_than_is_operator_p = true; in cp_parser_new()
2801 parser->default_arg_ok_p = true; in cp_parser_new()
2804 parser->integral_constant_expression_p = false; in cp_parser_new()
2805 parser->allow_non_integral_constant_expression_p = false; in cp_parser_new()
2806 parser->non_integral_constant_expression_p = false; in cp_parser_new()
2809 parser->local_variables_forbidden_p = false; in cp_parser_new()
2812 parser->in_unbraced_linkage_specification_p = false; in cp_parser_new()
2815 parser->in_declarator_p = false; in cp_parser_new()
2818 parser->in_template_argument_list_p = false; in cp_parser_new()
2821 parser->in_statement = 0; in cp_parser_new()
2824 parser->in_switch_statement_p = false; in cp_parser_new()
2827 parser->in_type_id_in_expr_p = false; in cp_parser_new()
2830 parser->implicit_extern_c = false; in cp_parser_new()
2833 parser->translate_strings_p = true; in cp_parser_new()
2836 parser->in_function_body = false; in cp_parser_new()
2839 parser->unparsed_functions_queues = build_tree_list (NULL_TREE, NULL_TREE); in cp_parser_new()
2842 parser->num_classes_being_defined = 0; in cp_parser_new()
2845 parser->num_template_parameter_lists = 0; in cp_parser_new()
2847 return parser; in cp_parser_new()
2855 cp_parser_push_lexer_for_tokens (cp_parser *parser, cp_token_cache *cache) in cp_parser_push_lexer_for_tokens() argument
2858 lexer->next = parser->lexer; in cp_parser_push_lexer_for_tokens()
2859 parser->lexer = lexer; in cp_parser_push_lexer_for_tokens()
2869 cp_parser_pop_lexer (cp_parser *parser) in cp_parser_pop_lexer() argument
2871 cp_lexer *lexer = parser->lexer; in cp_parser_pop_lexer()
2872 parser->lexer = lexer->next; in cp_parser_pop_lexer()
2877 cp_lexer_set_source_position_from_token (parser->lexer->next_token); in cp_parser_pop_lexer()
2886 cp_parser_identifier (cp_parser* parser) in cp_parser_identifier() argument
2891 token = cp_parser_require (parser, CPP_NAME, "identifier"); in cp_parser_identifier()
2911 cp_parser_string_literal (cp_parser *parser, bool translate, bool wide_ok) in cp_parser_string_literal() argument
2920 tok = cp_lexer_peek_token (parser->lexer); in cp_parser_string_literal()
2923 cp_parser_error (parser, "expected string-literal"); in cp_parser_string_literal()
2930 (cp_lexer_peek_nth_token (parser->lexer, 2))) in cp_parser_string_literal()
2932 cp_lexer_consume_token (parser->lexer); in cp_parser_string_literal()
2949 cp_lexer_consume_token (parser->lexer); in cp_parser_string_literal()
2958 tok = cp_lexer_peek_token (parser->lexer); in cp_parser_string_literal()
2967 cp_parser_error (parser, "a wide string is invalid in this context"); in cp_parser_string_literal()
3001 cp_parser_translation_unit (cp_parser* parser) in cp_parser_translation_unit() argument
3021 cp_parser_declaration_seq_opt (parser); in cp_parser_translation_unit()
3024 if (cp_lexer_next_token_is (parser->lexer, CPP_EOF)) in cp_parser_translation_unit()
3027 cp_lexer_destroy (parser->lexer); in cp_parser_translation_unit()
3028 parser->lexer = NULL; in cp_parser_translation_unit()
3032 if (parser->implicit_extern_c) in cp_parser_translation_unit()
3035 parser->implicit_extern_c = false; in cp_parser_translation_unit()
3045 cp_parser_error (parser, "expected declaration"); in cp_parser_translation_unit()
3093 cp_parser_primary_expression (cp_parser *parser, in cp_parser_primary_expression() argument
3105 token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
3112 tree expr = cp_parser_block_literal_expr (parser); in cp_parser_primary_expression()
3115 cp_parser_error (parser, "expected primary-expression"); in cp_parser_primary_expression()
3127 token = cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3132 && parser->integral_constant_expression_p in cp_parser_primary_expression()
3142 next_token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
3156 || parser->greater_than_is_operator_p)) in cp_parser_primary_expression()
3166 (parser, "floating-point literal"); in cp_parser_primary_expression()
3175 return cp_parser_string_literal (parser, in cp_parser_primary_expression()
3176 parser->translate_strings_p, in cp_parser_primary_expression()
3185 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3189 = parser->greater_than_is_operator_p; in cp_parser_primary_expression()
3190 parser->greater_than_is_operator_p = true; in cp_parser_primary_expression()
3193 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_primary_expression()
3194 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_primary_expression()
3206 if (!parser->in_function_body) in cp_parser_primary_expression()
3212 cp_parser_compound_statement (parser, expr, false, false); in cp_parser_primary_expression()
3219 expr = cp_parser_expression (parser, cast_p); in cp_parser_primary_expression()
3229 parser->greater_than_is_operator_p in cp_parser_primary_expression()
3232 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_primary_expression()
3233 cp_parser_skip_to_end_of_statement (parser); in cp_parser_primary_expression()
3243 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3246 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3251 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3256 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3257 if (parser->local_variables_forbidden_p) in cp_parser_primary_expression()
3263 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_primary_expression()
3283 token = cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3294 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
3296 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_primary_expression()
3298 expression = cp_parser_assignment_expression (parser, in cp_parser_primary_expression()
3301 cp_parser_require (parser, CPP_COMMA, "`,'"); in cp_parser_primary_expression()
3303 type = cp_parser_type_id (parser); in cp_parser_primary_expression()
3305 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_primary_expression()
3308 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_primary_expression()
3315 return cp_parser_builtin_offsetof (parser); in cp_parser_primary_expression()
3321 return cp_parser_objc_expression (parser); in cp_parser_primary_expression()
3324 cp_parser_error (parser, "expected primary-expression"); in cp_parser_primary_expression()
3345 = cp_parser_id_expression (parser, in cp_parser_primary_expression()
3353 token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
3371 decl = cp_parser_lookup_name (parser, id_expression, in cp_parser_primary_expression()
3384 && cp_objc_property_reference_prefix (parser, TREE_TYPE (decl))) in cp_parser_primary_expression()
3385 return cp_parser_objc_reference_expression (parser, decl); in cp_parser_primary_expression()
3409 if (parser->local_variables_forbidden_p in cp_parser_primary_expression()
3436 (id_expression, decl, parser->scope, in cp_parser_primary_expression()
3438 parser->integral_constant_expression_p, in cp_parser_primary_expression()
3439 parser->allow_non_integral_constant_expression_p, in cp_parser_primary_expression()
3440 &parser->non_integral_constant_expression_p, in cp_parser_primary_expression()
3445 cp_parser_error (parser, error_msg); in cp_parser_primary_expression()
3454 return cp_parser_objc_expression (parser); in cp_parser_primary_expression()
3456 cp_parser_error (parser, "expected primary-expression"); in cp_parser_primary_expression()
3496 cp_parser_id_expression (cp_parser *parser, in cp_parser_id_expression() argument
3512 = (cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false) in cp_parser_id_expression()
3516 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_id_expression()
3535 *template_p = cp_parser_optional_template_keyword (parser); in cp_parser_id_expression()
3538 saved_scope = parser->scope; in cp_parser_id_expression()
3539 saved_object_scope = parser->object_scope; in cp_parser_id_expression()
3540 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_id_expression()
3542 unqualified_id = cp_parser_unqualified_id (parser, *template_p, in cp_parser_id_expression()
3547 parser->scope = saved_scope; in cp_parser_id_expression()
3548 parser->object_scope = saved_object_scope; in cp_parser_id_expression()
3549 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_id_expression()
3561 token = cp_lexer_peek_token (parser->lexer); in cp_parser_id_expression()
3568 (parser, 2)) in cp_parser_id_expression()
3569 return cp_parser_identifier (parser); in cp_parser_id_expression()
3571 cp_parser_parse_tentatively (parser); in cp_parser_id_expression()
3573 id = cp_parser_template_id (parser, in cp_parser_id_expression()
3578 if (cp_parser_parse_definitely (parser)) in cp_parser_id_expression()
3583 token = cp_lexer_peek_token (parser->lexer); in cp_parser_id_expression()
3588 return cp_parser_identifier (parser); in cp_parser_id_expression()
3592 return cp_parser_operator_function_id (parser); in cp_parser_id_expression()
3596 cp_parser_error (parser, "expected id-expression"); in cp_parser_id_expression()
3601 return cp_parser_unqualified_id (parser, template_keyword_p, in cp_parser_id_expression()
3630 cp_parser_unqualified_id (cp_parser* parser, in cp_parser_unqualified_id() argument
3639 token = cp_lexer_peek_token (parser->lexer); in cp_parser_unqualified_id()
3649 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
3651 id = cp_parser_template_id (parser, template_keyword_p, in cp_parser_unqualified_id()
3655 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
3658 return cp_parser_identifier (parser); in cp_parser_unqualified_id()
3662 return cp_parser_template_id (parser, template_keyword_p, in cp_parser_unqualified_id()
3675 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
3711 scope = parser->scope; in cp_parser_unqualified_id()
3712 object_scope = parser->object_scope; in cp_parser_unqualified_id()
3713 qualifying_scope = parser->qualifying_scope; in cp_parser_unqualified_id()
3718 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_unqualified_id()
3719 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
3724 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
3726 cp_parser_simulate_error (parser); in cp_parser_unqualified_id()
3727 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_unqualified_id()
3728 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
3734 token = cp_lexer_peek_token (parser->lexer); in cp_parser_unqualified_id()
3737 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_unqualified_id()
3741 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
3751 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
3752 type_decl = cp_parser_class_name (parser, in cp_parser_unqualified_id()
3759 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
3765 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
3766 parser->scope = qualifying_scope; in cp_parser_unqualified_id()
3767 parser->object_scope = NULL_TREE; in cp_parser_unqualified_id()
3768 parser->qualifying_scope = NULL_TREE; in cp_parser_unqualified_id()
3770 = cp_parser_class_name (parser, in cp_parser_unqualified_id()
3777 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
3783 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
3784 parser->scope = object_scope; in cp_parser_unqualified_id()
3785 parser->object_scope = NULL_TREE; in cp_parser_unqualified_id()
3786 parser->qualifying_scope = NULL_TREE; in cp_parser_unqualified_id()
3788 = cp_parser_class_name (parser, in cp_parser_unqualified_id()
3795 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
3801 parser->scope = NULL_TREE; in cp_parser_unqualified_id()
3802 parser->object_scope = NULL_TREE; in cp_parser_unqualified_id()
3803 parser->qualifying_scope = NULL_TREE; in cp_parser_unqualified_id()
3805 = cp_parser_class_name (parser, in cp_parser_unqualified_id()
3825 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
3828 cp_parser_simulate_error (parser); in cp_parser_unqualified_id()
3839 && !cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
3852 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
3854 id = cp_parser_template_id (parser, template_keyword_p, in cp_parser_unqualified_id()
3858 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
3862 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
3864 id = cp_parser_operator_function_id (parser); in cp_parser_unqualified_id()
3866 if (!cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
3867 id = cp_parser_conversion_function_id (parser); in cp_parser_unqualified_id()
3876 cp_parser_error (parser, "expected unqualified-id"); in cp_parser_unqualified_id()
3901 cp_parser_nested_name_specifier_opt (cp_parser *parser, in cp_parser_nested_name_specifier_opt() argument
3912 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_nested_name_specifier_opt()
3914 start = cp_lexer_token_position (parser->lexer, false); in cp_parser_nested_name_specifier_opt()
3927 token = cp_lexer_peek_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
3934 cp_parser_pre_parsed_nested_name_specifier (parser); in cp_parser_nested_name_specifier_opt()
3939 && TREE_CODE (parser->scope) == TYPENAME_TYPE) in cp_parser_nested_name_specifier_opt()
3941 new_scope = resolve_typename_type (parser->scope, in cp_parser_nested_name_specifier_opt()
3944 parser->scope = new_scope; in cp_parser_nested_name_specifier_opt()
3967 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_nested_name_specifier_opt()
3970 (parser, 2)) in cp_parser_nested_name_specifier_opt()
3976 cp_parser_parse_tentatively (parser); in cp_parser_nested_name_specifier_opt()
3981 template_keyword_p = cp_parser_optional_template_keyword (parser); in cp_parser_nested_name_specifier_opt()
3987 old_scope = parser->scope; in cp_parser_nested_name_specifier_opt()
3988 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_nested_name_specifier_opt()
3995 && parser->scope in cp_parser_nested_name_specifier_opt()
3996 && TREE_CODE (parser->scope) == TYPENAME_TYPE) in cp_parser_nested_name_specifier_opt()
3997 parser->scope = resolve_typename_type (parser->scope, in cp_parser_nested_name_specifier_opt()
4001 = cp_parser_class_or_namespace_name (parser, in cp_parser_nested_name_specifier_opt()
4008 cp_parser_require (parser, CPP_SCOPE, "`::'"); in cp_parser_nested_name_specifier_opt()
4012 if (!cp_parser_parse_definitely (parser)) in cp_parser_nested_name_specifier_opt()
4019 parser->scope = old_scope; in cp_parser_nested_name_specifier_opt()
4020 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_nested_name_specifier_opt()
4021 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_nested_name_specifier_opt()
4026 while (cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_nested_name_specifier_opt()
4027 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_nested_name_specifier_opt()
4029 && (cp_lexer_peek_nth_token (parser->lexer, 3)->type in cp_parser_nested_name_specifier_opt()
4032 token = cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
4040 decl = cp_parser_lookup_name (parser, token->u.value, in cp_parser_nested_name_specifier_opt()
4057 (parser, token->u.value, decl, in cp_parser_nested_name_specifier_opt()
4060 parser->scope = error_mark_node; in cp_parser_nested_name_specifier_opt()
4072 cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
4105 parser->scope = new_scope; in cp_parser_nested_name_specifier_opt()
4117 token = cp_lexer_token_at (parser->lexer, start); in cp_parser_nested_name_specifier_opt()
4123 token->u.tree_check_value->value = parser->scope; in cp_parser_nested_name_specifier_opt()
4126 parser->qualifying_scope; in cp_parser_nested_name_specifier_opt()
4130 cp_lexer_purge_tokens_after (parser->lexer, start); in cp_parser_nested_name_specifier_opt()
4136 return success ? parser->scope : NULL_TREE; in cp_parser_nested_name_specifier_opt()
4145 cp_parser_nested_name_specifier (cp_parser *parser, in cp_parser_nested_name_specifier() argument
4154 scope = cp_parser_nested_name_specifier_opt (parser, in cp_parser_nested_name_specifier()
4162 cp_parser_error (parser, "expected nested-name-specifier"); in cp_parser_nested_name_specifier()
4163 parser->scope = NULL_TREE; in cp_parser_nested_name_specifier()
4187 cp_parser_class_or_namespace_name (cp_parser *parser, in cp_parser_class_or_namespace_name() argument
4203 saved_scope = parser->scope; in cp_parser_class_or_namespace_name()
4204 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_class_or_namespace_name()
4205 saved_object_scope = parser->object_scope; in cp_parser_class_or_namespace_name()
4210 cp_parser_parse_tentatively (parser); in cp_parser_class_or_namespace_name()
4211 scope = cp_parser_class_name (parser, in cp_parser_class_or_namespace_name()
4219 if (!only_class_p && !cp_parser_parse_definitely (parser)) in cp_parser_class_or_namespace_name()
4222 parser->scope = saved_scope; in cp_parser_class_or_namespace_name()
4223 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_class_or_namespace_name()
4224 parser->object_scope = saved_object_scope; in cp_parser_class_or_namespace_name()
4229 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME) in cp_parser_class_or_namespace_name()
4230 || cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_SCOPE) in cp_parser_class_or_namespace_name()
4232 scope = cp_parser_namespace_name (parser); in cp_parser_class_or_namespace_name()
4278 cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p) in cp_parser_postfix_expression() argument
4286 token = cp_lexer_peek_token (parser->lexer); in cp_parser_postfix_expression()
4303 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
4306 saved_message = parser->type_definition_forbidden_message; in cp_parser_postfix_expression()
4307 parser->type_definition_forbidden_message in cp_parser_postfix_expression()
4311 cp_parser_require (parser, CPP_LESS, "`<'"); in cp_parser_postfix_expression()
4313 type = cp_parser_type_id (parser); in cp_parser_postfix_expression()
4315 cp_parser_require (parser, CPP_GREATER, "`>'"); in cp_parser_postfix_expression()
4317 parser->type_definition_forbidden_message = saved_message; in cp_parser_postfix_expression()
4320 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_postfix_expression()
4321 expression = cp_parser_expression (parser, /*cast_p=*/true); in cp_parser_postfix_expression()
4322 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_postfix_expression()
4328 (parser, in cp_parser_postfix_expression()
4364 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
4366 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_postfix_expression()
4368 saved_message = parser->type_definition_forbidden_message; in cp_parser_postfix_expression()
4369 parser->type_definition_forbidden_message in cp_parser_postfix_expression()
4373 cp_parser_parse_tentatively (parser); in cp_parser_postfix_expression()
4375 saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_postfix_expression()
4376 parser->in_type_id_in_expr_p = true; in cp_parser_postfix_expression()
4377 type = cp_parser_type_id (parser); in cp_parser_postfix_expression()
4378 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_postfix_expression()
4382 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_postfix_expression()
4384 if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_expression()
4392 expression = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_postfix_expression()
4396 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_postfix_expression()
4399 parser->type_definition_forbidden_message = saved_message; in cp_parser_postfix_expression()
4401 if (cp_parser_non_integral_constant_expression(parser, in cp_parser_postfix_expression()
4412 type = cp_parser_elaborated_type_specifier (parser, in cp_parser_postfix_expression()
4415 postfix_expression = cp_parser_functional_cast (parser, type); in cp_parser_postfix_expression()
4427 cp_parser_parse_tentatively (parser); in cp_parser_postfix_expression()
4429 type = cp_parser_simple_type_specifier (parser, in cp_parser_postfix_expression()
4433 if (!cp_parser_error_occurred (parser)) in cp_parser_postfix_expression()
4435 = cp_parser_functional_cast (parser, type); in cp_parser_postfix_expression()
4437 if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_expression()
4442 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_postfix_expression()
4443 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_postfix_expression()
4448 cp_parser_parse_tentatively (parser); in cp_parser_postfix_expression()
4450 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
4452 saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_postfix_expression()
4453 parser->in_type_id_in_expr_p = true; in cp_parser_postfix_expression()
4454 type = cp_parser_type_id (parser); in cp_parser_postfix_expression()
4455 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_postfix_expression()
4457 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_postfix_expression()
4459 cp_parser_require (parser, CPP_OPEN_BRACE, "`{'"); in cp_parser_postfix_expression()
4462 if (!cp_parser_error_occurred (parser)) in cp_parser_postfix_expression()
4467 = cp_parser_initializer_list (parser, &non_constant_p); in cp_parser_postfix_expression()
4469 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_postfix_expression()
4470 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
4472 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_postfix_expression()
4476 if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_expression()
4492 (parser, "non-constant compound literals")) in cp_parser_postfix_expression()
4506 = cp_parser_primary_expression (parser, address_p, cast_p, in cp_parser_postfix_expression()
4518 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_postfix_expression()
4524 token = cp_lexer_peek_token (parser->lexer); in cp_parser_postfix_expression()
4530 = cp_parser_postfix_open_square_expression (parser, in cp_parser_postfix_expression()
4552 = parser->integral_constant_expression_p; in cp_parser_postfix_expression()
4554 = parser->non_integral_constant_expression_p; in cp_parser_postfix_expression()
4555 parser->integral_constant_expression_p = false; in cp_parser_postfix_expression()
4558 (parser, /*is_attribute_list=*/false, in cp_parser_postfix_expression()
4563 parser->integral_constant_expression_p in cp_parser_postfix_expression()
4565 parser->non_integral_constant_expression_p in cp_parser_postfix_expression()
4578 && cp_parser_non_integral_constant_expression (parser, in cp_parser_postfix_expression()
4685 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
4688 = cp_parser_postfix_dot_deref_expression (parser, token->type, in cp_parser_postfix_expression()
4696 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
4702 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_postfix_expression()
4711 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
4717 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_postfix_expression()
4742 cp_parser_postfix_open_square_expression (cp_parser *parser, in cp_parser_postfix_open_square_expression() argument
4749 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_open_square_expression()
4760 index = cp_parser_constant_expression (parser, false, NULL); in cp_parser_postfix_open_square_expression()
4762 index = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_postfix_open_square_expression()
4765 cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'"); in cp_parser_postfix_open_square_expression()
4774 (parser, "an array reference"))) in cp_parser_postfix_open_square_expression()
4794 cp_parser_postfix_dot_deref_expression (cp_parser *parser, in cp_parser_postfix_dot_deref_expression() argument
4810 parser->scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
4811 parser->qualifying_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
4812 parser->object_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
4836 parser->context->object_type = scope; in cp_parser_postfix_dot_deref_expression()
4859 cp_parser_parse_tentatively (parser); in cp_parser_postfix_dot_deref_expression()
4862 cp_parser_pseudo_destructor_name (parser, &s, &type); in cp_parser_postfix_dot_deref_expression()
4863 if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_dot_deref_expression()
4880 (parser, in cp_parser_postfix_dot_deref_expression()
4881 cp_parser_optional_template_keyword (parser), in cp_parser_postfix_dot_deref_expression()
4898 if (parser->scope) in cp_parser_postfix_dot_deref_expression()
4910 if (name != error_mark_node && !BASELINK_P (name) && parser->scope) in cp_parser_postfix_dot_deref_expression()
4913 parser->scope, in cp_parser_postfix_dot_deref_expression()
4916 parser->scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
4917 parser->qualifying_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
4918 parser->object_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
4931 parser->context->object_type = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
4937 (parser, token_type == CPP_DEREF ? "'->'" : "`.'"))) in cp_parser_postfix_dot_deref_expression()
4967 cp_parser_parenthesized_expression_list (cp_parser* parser, in cp_parser_parenthesized_expression_list() argument
4980 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_parenthesized_expression_list()
4984 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_parenthesized_expression_list()
4992 && cp_lexer_peek_token (parser->lexer)->type == CPP_NAME) in cp_parser_parenthesized_expression_list()
4997 token = cp_lexer_consume_token (parser->lexer); in cp_parser_parenthesized_expression_list()
5008 (parser, /*allow_non_constant_p=*/true, in cp_parser_parenthesized_expression_list()
5014 expr = cp_parser_assignment_expression (parser, cast_p); in cp_parser_parenthesized_expression_list()
5035 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_parenthesized_expression_list()
5039 cp_lexer_consume_token (parser->lexer); in cp_parser_parenthesized_expression_list()
5042 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_parenthesized_expression_list()
5049 ending = cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_parenthesized_expression_list()
5080 cp_parser_pseudo_destructor_name (cp_parser* parser, in cp_parser_pseudo_destructor_name() argument
5090 cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/true); in cp_parser_pseudo_destructor_name()
5093 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_pseudo_destructor_name()
5102 && cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_pseudo_destructor_name()
5105 cp_lexer_consume_token (parser->lexer); in cp_parser_pseudo_destructor_name()
5107 cp_parser_template_id (parser, in cp_parser_pseudo_destructor_name()
5112 cp_parser_require (parser, CPP_SCOPE, "`::'"); in cp_parser_pseudo_destructor_name()
5116 else if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMPL)) in cp_parser_pseudo_destructor_name()
5119 *scope = TREE_TYPE (cp_parser_type_name (parser)); in cp_parser_pseudo_destructor_name()
5129 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SCOPE) in cp_parser_pseudo_destructor_name()
5130 || cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_COMPL) in cp_parser_pseudo_destructor_name()
5132 cp_parser_error (parser, "request for member of non-aggregate type"); in cp_parser_pseudo_destructor_name()
5137 cp_parser_require (parser, CPP_SCOPE, "`::'"); in cp_parser_pseudo_destructor_name()
5143 cp_parser_require (parser, CPP_COMPL, "`~'"); in cp_parser_pseudo_destructor_name()
5146 *type = cp_parser_type_name (parser); in cp_parser_pseudo_destructor_name()
5178 cp_parser_unary_expression (cp_parser *parser, bool address_p, bool cast_p) in cp_parser_unary_expression() argument
5184 token = cp_lexer_peek_token (parser->lexer); in cp_parser_unary_expression()
5200 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
5202 operand = cp_parser_sizeof_operand (parser, keyword); in cp_parser_unary_expression()
5211 return cp_parser_new_expression (parser); in cp_parser_unary_expression()
5214 return cp_parser_delete_expression (parser); in cp_parser_unary_expression()
5223 cp_parser_extension_opt (parser, &saved_pedantic); in cp_parser_unary_expression()
5225 expr = cp_parser_simple_cast_expression (parser); in cp_parser_unary_expression()
5238 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
5240 expression = cp_parser_simple_cast_expression (parser); in cp_parser_unary_expression()
5257 if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_unary_expression()
5263 keyword = cp_lexer_peek_nth_token (parser->lexer, 2)->keyword; in cp_parser_unary_expression()
5266 return cp_parser_new_expression (parser); in cp_parser_unary_expression()
5269 return cp_parser_delete_expression (parser); in cp_parser_unary_expression()
5283 else if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_unary_expression()
5289 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
5291 identifier = cp_parser_identifier (parser); in cp_parser_unary_expression()
5303 token = cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
5306 = cp_parser_cast_expression (parser, in cp_parser_unary_expression()
5340 && cp_parser_non_integral_constant_expression (parser, in cp_parser_unary_expression()
5347 return cp_parser_postfix_expression (parser, address_p, cast_p); in cp_parser_unary_expression()
5390 cp_parser_new_expression (cp_parser* parser) in cp_parser_new_expression() argument
5400 = (cp_parser_global_scope_opt (parser, in cp_parser_new_expression()
5404 cp_parser_require_keyword (parser, RID_NEW, "`new'"); in cp_parser_new_expression()
5407 cp_parser_parse_tentatively (parser); in cp_parser_new_expression()
5409 placement = cp_parser_new_placement (parser); in cp_parser_new_expression()
5411 if (!cp_parser_parse_definitely (parser)) in cp_parser_new_expression()
5416 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_new_expression()
5419 cp_lexer_consume_token (parser->lexer); in cp_parser_new_expression()
5421 type = cp_parser_type_id (parser); in cp_parser_new_expression()
5423 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_new_expression()
5427 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_new_expression()
5431 cp_parser_direct_new_declarator (parser); in cp_parser_new_expression()
5437 type = cp_parser_new_type_id (parser, &nelts); in cp_parser_new_expression()
5440 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_new_expression()
5441 initializer = cp_parser_new_initializer (parser); in cp_parser_new_expression()
5447 if (cp_parser_non_integral_constant_expression (parser, "`new'")) in cp_parser_new_expression()
5462 cp_parser_new_placement (cp_parser* parser) in cp_parser_new_placement() argument
5468 (parser, false, /*cast_p=*/false, in cp_parser_new_placement()
5484 cp_parser_new_type_id (cp_parser* parser, tree *nelts) in cp_parser_new_type_id() argument
5497 saved_message = parser->type_definition_forbidden_message; in cp_parser_new_type_id()
5498 parser->type_definition_forbidden_message in cp_parser_new_type_id()
5501 cp_parser_type_specifier_seq (parser, /*is_condition=*/false, in cp_parser_new_type_id()
5504 parser->type_definition_forbidden_message = saved_message; in cp_parser_new_type_id()
5506 new_declarator = cp_parser_new_declarator_opt (parser); in cp_parser_new_type_id()
5559 cp_parser_new_declarator_opt (cp_parser* parser) in cp_parser_new_declarator_opt() argument
5566 cp_parser_parse_tentatively (parser); in cp_parser_new_declarator_opt()
5568 code = cp_parser_ptr_operator (parser, &type, &cv_quals); in cp_parser_new_declarator_opt()
5570 if (cp_parser_parse_definitely (parser)) in cp_parser_new_declarator_opt()
5575 declarator = cp_parser_new_declarator_opt (parser); in cp_parser_new_declarator_opt()
5589 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_new_declarator_opt()
5590 return cp_parser_direct_new_declarator (parser); in cp_parser_new_declarator_opt()
5604 cp_parser_direct_new_declarator (cp_parser* parser) in cp_parser_direct_new_declarator() argument
5613 cp_parser_require (parser, CPP_OPEN_SQUARE, "`['"); in cp_parser_direct_new_declarator()
5617 expression = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_direct_new_declarator()
5641 = cp_parser_constant_expression (parser, in cp_parser_direct_new_declarator()
5645 cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'"); in cp_parser_direct_new_declarator()
5652 if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_direct_new_declarator()
5668 cp_parser_new_initializer (cp_parser* parser) in cp_parser_new_initializer() argument
5673 (parser, false, /*cast_p=*/false, in cp_parser_new_initializer()
5690 cp_parser_delete_expression (cp_parser* parser) in cp_parser_delete_expression() argument
5698 = (cp_parser_global_scope_opt (parser, in cp_parser_delete_expression()
5702 cp_parser_require_keyword (parser, RID_DELETE, "`delete'"); in cp_parser_delete_expression()
5704 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_delete_expression()
5707 cp_lexer_consume_token (parser->lexer); in cp_parser_delete_expression()
5709 cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'"); in cp_parser_delete_expression()
5717 expression = cp_parser_simple_cast_expression (parser); in cp_parser_delete_expression()
5721 if (cp_parser_non_integral_constant_expression (parser, "`delete'")) in cp_parser_delete_expression()
5740 cp_parser_cast_expression (cp_parser *parser, bool address_p, bool cast_p) in cp_parser_cast_expression() argument
5743 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_cast_expression()
5753 cp_parser_parse_tentatively (parser); in cp_parser_cast_expression()
5755 saved_message = parser->type_definition_forbidden_message; in cp_parser_cast_expression()
5756 parser->type_definition_forbidden_message in cp_parser_cast_expression()
5759 cp_lexer_consume_token (parser->lexer); in cp_parser_cast_expression()
5776 cp_lexer_save_tokens (parser->lexer); in cp_parser_cast_expression()
5781 = (cp_parser_skip_to_closing_parenthesis (parser, false, false, in cp_parser_cast_expression()
5783 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)); in cp_parser_cast_expression()
5785 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_cast_expression()
5790 cp_parser_simulate_error (parser); in cp_parser_cast_expression()
5793 bool saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_cast_expression()
5794 parser->in_type_id_in_expr_p = true; in cp_parser_cast_expression()
5796 type = cp_parser_type_id (parser); in cp_parser_cast_expression()
5798 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_cast_expression()
5799 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_cast_expression()
5803 parser->type_definition_forbidden_message = saved_message; in cp_parser_cast_expression()
5809 if (!cp_parser_error_occurred (parser)) in cp_parser_cast_expression()
5810 expr = cp_parser_cast_expression (parser, in cp_parser_cast_expression()
5814 if (cp_parser_parse_definitely (parser)) in cp_parser_cast_expression()
5827 (parser, in cp_parser_cast_expression()
5840 return cp_parser_unary_expression (parser, address_p, cast_p); in cp_parser_cast_expression()
5916 ((token->type == CPP_GREATER && !parser->greater_than_is_operator_p) \
5921 cp_parser_binary_expression (cp_parser* parser, bool cast_p) in cp_parser_binary_expression() argument
5932 lhs = cp_parser_cast_expression (parser, /*address_p=*/false, cast_p); in cp_parser_binary_expression()
5938 token = cp_lexer_peek_token (parser->lexer); in cp_parser_binary_expression()
5961 cp_lexer_consume_token (parser->lexer); in cp_parser_binary_expression()
5965 rhs = cp_parser_simple_cast_expression (parser); in cp_parser_binary_expression()
5971 token = cp_lexer_peek_token (parser->lexer); in cp_parser_binary_expression()
6020 (parser, "calls to overloaded operators"))) in cp_parser_binary_expression()
6042 cp_parser_question_colon_clause (cp_parser* parser, tree logical_or_expr) in cp_parser_question_colon_clause() argument
6048 cp_lexer_consume_token (parser->lexer); in cp_parser_question_colon_clause()
6049 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_question_colon_clause()
6050 && cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_question_colon_clause()
6055 expr = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_question_colon_clause()
6058 cp_parser_require (parser, CPP_COLON, "`:'"); in cp_parser_question_colon_clause()
6060 assignment_expr = cp_parser_assignment_expression (parser, /*cast_p=*/false); in cp_parser_question_colon_clause()
6080 cp_parser_assignment_expression (cp_parser* parser, bool cast_p) in cp_parser_assignment_expression() argument
6086 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_THROW)) in cp_parser_assignment_expression()
6087 expr = cp_parser_throw_expression (parser); in cp_parser_assignment_expression()
6093 expr = cp_parser_binary_expression (parser, cast_p); in cp_parser_assignment_expression()
6096 if (cp_lexer_next_token_is (parser->lexer, CPP_QUERY)) in cp_parser_assignment_expression()
6097 return cp_parser_question_colon_clause (parser, expr); in cp_parser_assignment_expression()
6105 = cp_parser_assignment_operator_opt (parser); in cp_parser_assignment_expression()
6111 rhs = cp_parser_assignment_expression (parser, cast_p); in cp_parser_assignment_expression()
6114 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_assignment_expression()
6146 cp_parser_assignment_operator_opt (cp_parser* parser) in cp_parser_assignment_operator_opt() argument
6152 token = cp_lexer_peek_token (parser->lexer); in cp_parser_assignment_operator_opt()
6207 cp_lexer_consume_token (parser->lexer); in cp_parser_assignment_operator_opt()
6223 cp_parser_expression (cp_parser* parser, bool cast_p) in cp_parser_expression() argument
6233 = cp_parser_assignment_expression (parser, cast_p); in cp_parser_expression()
6243 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_expression()
6246 cp_lexer_consume_token (parser->lexer); in cp_parser_expression()
6248 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_expression()
6267 cp_parser_constant_expression (cp_parser* parser, in cp_parser_constant_expression() argument
6294 saved_integral_constant_expression_p = parser->integral_constant_expression_p; in cp_parser_constant_expression()
6296 = parser->allow_non_integral_constant_expression_p; in cp_parser_constant_expression()
6297 saved_non_integral_constant_expression_p = parser->non_integral_constant_expression_p; in cp_parser_constant_expression()
6299 parser->integral_constant_expression_p = true; in cp_parser_constant_expression()
6300 parser->allow_non_integral_constant_expression_p = allow_non_constant_p; in cp_parser_constant_expression()
6301 parser->non_integral_constant_expression_p = false; in cp_parser_constant_expression()
6311 expression = cp_parser_assignment_expression (parser, /*cast_p=*/false); in cp_parser_constant_expression()
6313 parser->integral_constant_expression_p in cp_parser_constant_expression()
6315 parser->allow_non_integral_constant_expression_p in cp_parser_constant_expression()
6318 *non_constant_p = parser->non_integral_constant_expression_p; in cp_parser_constant_expression()
6319 else if (parser->non_integral_constant_expression_p) in cp_parser_constant_expression()
6321 parser->non_integral_constant_expression_p in cp_parser_constant_expression()
6338 cp_parser_builtin_offsetof (cp_parser *parser) in cp_parser_builtin_offsetof() argument
6347 save_ice_p = parser->integral_constant_expression_p; in cp_parser_builtin_offsetof()
6348 save_non_ice_p = parser->non_integral_constant_expression_p; in cp_parser_builtin_offsetof()
6351 cp_lexer_consume_token (parser->lexer); in cp_parser_builtin_offsetof()
6353 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_builtin_offsetof()
6355 type = cp_parser_type_id (parser); in cp_parser_builtin_offsetof()
6357 cp_parser_require (parser, CPP_COMMA, "`,'"); in cp_parser_builtin_offsetof()
6363 expr = cp_parser_postfix_dot_deref_expression (parser, CPP_DEREF, expr, in cp_parser_builtin_offsetof()
6367 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_builtin_offsetof()
6372 expr = cp_parser_postfix_open_square_expression (parser, expr, true); in cp_parser_builtin_offsetof()
6377 cp_lexer_consume_token (parser->lexer); in cp_parser_builtin_offsetof()
6378 expr = cp_parser_postfix_dot_deref_expression (parser, CPP_DOT, expr, in cp_parser_builtin_offsetof()
6384 cp_lexer_consume_token (parser->lexer); in cp_parser_builtin_offsetof()
6390 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_builtin_offsetof()
6391 cp_parser_skip_to_closing_parenthesis (parser, true, false, true); in cp_parser_builtin_offsetof()
6406 parser->integral_constant_expression_p = save_ice_p; in cp_parser_builtin_offsetof()
6407 parser->non_integral_constant_expression_p = save_non_ice_p; in cp_parser_builtin_offsetof()
6434 cp_parser_statement (cp_parser* parser, tree in_statement_expr, in cp_parser_statement() argument
6447 token = cp_lexer_peek_token (parser->lexer); in cp_parser_statement()
6463 cp_parser_label_for_labeled_statement (parser); in cp_parser_statement()
6468 statement = cp_parser_selection_statement (parser, if_p); in cp_parser_statement()
6474 statement = cp_parser_iteration_statement (parser); in cp_parser_statement()
6481 statement = cp_parser_jump_statement (parser); in cp_parser_statement()
6490 statement = cp_parser_objc_statement (parser); in cp_parser_statement()
6494 statement = cp_parser_try_block (parser); in cp_parser_statement()
6507 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_statement()
6513 cp_parser_label_for_labeled_statement (parser); in cp_parser_statement()
6520 statement = cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_statement()
6531 cp_parser_pragma (parser, pragma_compound); in cp_parser_statement()
6532 else if (!cp_parser_pragma (parser, pragma_stmt)) in cp_parser_statement()
6538 cp_parser_error (parser, "expected statement"); in cp_parser_statement()
6548 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_statement()
6550 cp_parser_parse_tentatively (parser); in cp_parser_statement()
6552 cp_parser_declaration_statement (parser); in cp_parser_statement()
6554 if (cp_parser_parse_definitely (parser)) in cp_parser_statement()
6558 statement = cp_parser_expression_statement (parser, in_statement_expr); in cp_parser_statement()
6580 cp_parser_label_for_labeled_statement (cp_parser* parser) in cp_parser_label_for_labeled_statement() argument
6585 token = cp_lexer_peek_token (parser->lexer); in cp_parser_label_for_labeled_statement()
6589 cp_parser_error (parser, "expected labeled-statement"); in cp_parser_label_for_labeled_statement()
6601 cp_lexer_consume_token (parser->lexer); in cp_parser_label_for_labeled_statement()
6603 expr = cp_parser_constant_expression (parser, in cp_parser_label_for_labeled_statement()
6607 ellipsis = cp_lexer_peek_token (parser->lexer); in cp_parser_label_for_labeled_statement()
6611 cp_lexer_consume_token (parser->lexer); in cp_parser_label_for_labeled_statement()
6613 cp_parser_constant_expression (parser, in cp_parser_label_for_labeled_statement()
6622 if (parser->in_switch_statement_p) in cp_parser_label_for_labeled_statement()
6631 cp_lexer_consume_token (parser->lexer); in cp_parser_label_for_labeled_statement()
6633 if (parser->in_switch_statement_p) in cp_parser_label_for_labeled_statement()
6641 finish_label_stmt (cp_parser_identifier (parser)); in cp_parser_label_for_labeled_statement()
6646 cp_parser_require (parser, CPP_COLON, "`:'"); in cp_parser_label_for_labeled_statement()
6660 cp_parser_expression_statement (cp_parser* parser, tree in_statement_expr) in cp_parser_expression_statement() argument
6666 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_expression_statement()
6667 statement = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_expression_statement()
6670 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_expression_statement()
6673 && cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_expression_statement()
6693 cp_parser_compound_statement (cp_parser *parser, tree in_statement_expr, in cp_parser_compound_statement() argument
6700 if (!cp_parser_require (parser, CPP_OPEN_BRACE, "`{'")) in cp_parser_compound_statement()
6705 cp_parser_statement_seq_opt (parser, in_statement_expr); in cp_parser_compound_statement()
6713 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_compound_statement()
6725 cp_parser_statement_seq_opt (cp_parser* parser, tree in_statement_expr) in cp_parser_statement_seq_opt() argument
6746 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_statement_seq_opt()
6767 cp_parser_statement (parser, in_statement_expr, true, NULL); in cp_parser_statement_seq_opt()
6786 cp_parser_selection_statement (cp_parser* parser, bool *if_p) in cp_parser_selection_statement() argument
6795 token = cp_parser_require (parser, CPP_KEYWORD, "selection-statement"); in cp_parser_selection_statement()
6808 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_selection_statement()
6810 cp_parser_skip_to_end_of_statement (parser); in cp_parser_selection_statement()
6821 condition = cp_parser_condition (parser); in cp_parser_selection_statement()
6823 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_selection_statement()
6824 cp_parser_skip_to_closing_parenthesis (parser, true, false, in cp_parser_selection_statement()
6835 cp_parser_implicitly_scoped_statement (parser, &nested_if); in cp_parser_selection_statement()
6839 if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_selection_statement()
6843 cp_lexer_consume_token (parser->lexer); in cp_parser_selection_statement()
6846 cp_parser_implicitly_scoped_statement (parser, NULL); in cp_parser_selection_statement()
6882 in_switch_statement_p = parser->in_switch_statement_p; in cp_parser_selection_statement()
6883 in_statement = parser->in_statement; in cp_parser_selection_statement()
6884 parser->in_switch_statement_p = true; in cp_parser_selection_statement()
6885 parser->in_statement |= IN_SWITCH_STMT; in cp_parser_selection_statement()
6886 cp_parser_implicitly_scoped_statement (parser, NULL); in cp_parser_selection_statement()
6887 parser->in_switch_statement_p = in_switch_statement_p; in cp_parser_selection_statement()
6888 parser->in_statement = in_statement; in cp_parser_selection_statement()
6899 cp_parser_error (parser, "expected selection-statement"); in cp_parser_selection_statement()
6919 cp_parser_condition (cp_parser* parser) in cp_parser_condition() argument
6925 cp_parser_parse_tentatively (parser); in cp_parser_condition()
6928 saved_message = parser->type_definition_forbidden_message; in cp_parser_condition()
6929 parser->type_definition_forbidden_message in cp_parser_condition()
6932 cp_parser_type_specifier_seq (parser, /*is_condition==*/true, in cp_parser_condition()
6935 parser->type_definition_forbidden_message = saved_message; in cp_parser_condition()
6937 if (!cp_parser_error_occurred (parser)) in cp_parser_condition()
6946 declarator = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_condition()
6951 attributes = cp_parser_attributes_opt (parser); in cp_parser_condition()
6953 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_condition()
6961 cp_parser_require (parser, CPP_EQ, "`='"); in cp_parser_condition()
6964 if (cp_parser_parse_definitely (parser)) in cp_parser_condition()
6976 = cp_parser_constant_expression (parser, in cp_parser_condition()
6997 cp_parser_abort_tentative_parse (parser); in cp_parser_condition()
7000 return cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_condition()
7012 cp_parser_parse_foreach_stmt (cp_parser *parser) in cp_parser_parse_foreach_stmt() argument
7026 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parse_foreach_stmt()
7030 cp_parser_parse_tentatively (parser); in cp_parser_parse_foreach_stmt()
7033 = cp_parser_type_specifier (parser, CP_PARSER_FLAGS_OPTIONAL, in cp_parser_parse_foreach_stmt()
7039 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_parse_foreach_stmt()
7045 cp_parser_abort_tentative_parse (parser); in cp_parser_parse_foreach_stmt()
7049 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parse_foreach_stmt()
7055 enum cpp_ttype nt = cp_lexer_peek_nth_token (parser->lexer, 2)->type; in cp_parser_parse_foreach_stmt()
7076 cp_parser_commit_to_tentative_parse (parser); in cp_parser_parse_foreach_stmt()
7099 cp_parser_abort_tentative_parse (parser); in cp_parser_parse_foreach_stmt()
7100 statement = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_parse_foreach_stmt()
7105 cp_lexer_consume_token (parser->lexer); in cp_parser_parse_foreach_stmt()
7108 cp_parser_abort_tentative_parse (parser); in cp_parser_parse_foreach_stmt()
7132 cp_parser_iteration_statement (cp_parser* parser) in cp_parser_iteration_statement() argument
7144 token = cp_parser_require (parser, CPP_KEYWORD, "iteration-statement"); in cp_parser_iteration_statement()
7150 in_statement = parser->in_statement; in cp_parser_iteration_statement()
7154 attributes = cp_parser_attributes_opt (parser); in cp_parser_iteration_statement()
7170 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_iteration_statement()
7172 condition = cp_parser_condition (parser); in cp_parser_iteration_statement()
7175 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_iteration_statement()
7177 parser->in_statement = IN_ITERATION_STMT; in cp_parser_iteration_statement()
7178 cp_parser_already_scoped_statement (parser); in cp_parser_iteration_statement()
7179 parser->in_statement = in_statement; in cp_parser_iteration_statement()
7194 parser->in_statement = IN_ITERATION_STMT; in cp_parser_iteration_statement()
7195 cp_parser_implicitly_scoped_statement (parser, NULL); in cp_parser_iteration_statement()
7196 parser->in_statement = in_statement; in cp_parser_iteration_statement()
7199 cp_parser_require_keyword (parser, RID_WHILE, "`while'"); in cp_parser_iteration_statement()
7201 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_iteration_statement()
7203 expression = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_iteration_statement()
7207 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_iteration_statement()
7209 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_iteration_statement()
7223 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_iteration_statement()
7225 cp_parser_for_init_statement (parser); in cp_parser_iteration_statement()
7229 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_iteration_statement()
7230 condition = cp_parser_condition (parser); in cp_parser_iteration_statement()
7233 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_iteration_statement()
7236 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_iteration_statement()
7237 expression = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_iteration_statement()
7240 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_iteration_statement()
7243 parser->in_statement = IN_ITERATION_STMT; in cp_parser_iteration_statement()
7244 cp_parser_already_scoped_statement (parser); in cp_parser_iteration_statement()
7245 parser->in_statement = in_statement; in cp_parser_iteration_statement()
7253 cp_parser_error (parser, "expected iteration-statement"); in cp_parser_iteration_statement()
7268 cp_parser_for_init_statement (cp_parser* parser) in cp_parser_for_init_statement() argument
7276 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_for_init_statement()
7280 cp_parser_parse_tentatively (parser); in cp_parser_for_init_statement()
7282 cp_parser_simple_declaration (parser, in cp_parser_for_init_statement()
7286 if (cp_parser_parse_definitely (parser)) in cp_parser_for_init_statement()
7290 cp_parser_expression_statement (parser, false); in cp_parser_for_init_statement()
7309 cp_parser_jump_statement (cp_parser* parser) in cp_parser_jump_statement() argument
7316 token = cp_parser_require (parser, CPP_KEYWORD, "jump-statement"); in cp_parser_jump_statement()
7325 switch (parser->in_statement) in cp_parser_jump_statement()
7331 gcc_assert ((parser->in_statement & IN_SWITCH_STMT) in cp_parser_jump_statement()
7332 || parser->in_statement == IN_ITERATION_STMT); in cp_parser_jump_statement()
7342 cp_parser_require (parser, CPP_SEMICOLON, "%<;%>"); in cp_parser_jump_statement()
7346 switch (parser->in_statement & ~IN_SWITCH_STMT) in cp_parser_jump_statement()
7361 cp_parser_require (parser, CPP_SEMICOLON, "%<;%>"); in cp_parser_jump_statement()
7370 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_jump_statement()
7371 expr = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_jump_statement()
7377 cp_parser_require (parser, CPP_SEMICOLON, "%<;%>"); in cp_parser_jump_statement()
7387 if (cp_lexer_next_token_is (parser->lexer, CPP_MULT)) in cp_parser_jump_statement()
7393 cp_lexer_consume_token (parser->lexer); in cp_parser_jump_statement()
7395 finish_goto_stmt (cp_parser_expression (parser, /*cast_p=*/false)); in cp_parser_jump_statement()
7398 finish_goto_stmt (cp_parser_identifier (parser)); in cp_parser_jump_statement()
7400 cp_parser_require (parser, CPP_SEMICOLON, "%<;%>"); in cp_parser_jump_statement()
7404 cp_parser_error (parser, "expected jump-statement"); in cp_parser_jump_statement()
7417 cp_parser_declaration_statement (cp_parser* parser) in cp_parser_declaration_statement() argument
7425 cp_parser_block_declaration (parser, /*statement_p=*/true); in cp_parser_declaration_statement()
7451 cp_parser_implicitly_scoped_statement (cp_parser* parser, bool *if_p) in cp_parser_implicitly_scoped_statement() argument
7459 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_implicitly_scoped_statement()
7461 cp_lexer_consume_token (parser->lexer); in cp_parser_implicitly_scoped_statement()
7465 else if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_implicitly_scoped_statement()
7467 statement = cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_implicitly_scoped_statement()
7474 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_implicitly_scoped_statement()
7489 cp_parser_already_scoped_statement (cp_parser* parser) in cp_parser_already_scoped_statement() argument
7492 if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_already_scoped_statement()
7493 cp_parser_statement (parser, NULL_TREE, false, NULL); in cp_parser_already_scoped_statement()
7498 cp_parser_require (parser, CPP_OPEN_BRACE, "`{'"); in cp_parser_already_scoped_statement()
7499 cp_parser_statement_seq_opt (parser, NULL_TREE); in cp_parser_already_scoped_statement()
7500 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_already_scoped_statement()
7513 cp_parser_declaration_seq_opt (cp_parser* parser) in cp_parser_declaration_seq_opt() argument
7519 token = cp_lexer_peek_token (parser->lexer); in cp_parser_declaration_seq_opt()
7530 cp_lexer_consume_token (parser->lexer); in cp_parser_declaration_seq_opt()
7538 if (!parser->implicit_extern_c && token->implicit_extern_c) in cp_parser_declaration_seq_opt()
7541 parser->implicit_extern_c = true; in cp_parser_declaration_seq_opt()
7543 else if (parser->implicit_extern_c && !token->implicit_extern_c) in cp_parser_declaration_seq_opt()
7546 parser->implicit_extern_c = false; in cp_parser_declaration_seq_opt()
7555 cp_parser_pragma (parser, pragma_external); in cp_parser_declaration_seq_opt()
7560 cp_parser_declaration (parser); in cp_parser_declaration_seq_opt()
7581 cp_parser_declaration (cp_parser* parser) in cp_parser_declaration() argument
7589 if (cp_parser_extension_opt (parser, &saved_pedantic)) in cp_parser_declaration()
7592 cp_parser_declaration (parser); in cp_parser_declaration()
7600 token1 = *cp_lexer_peek_token (parser->lexer); in cp_parser_declaration()
7603 token2 = *cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_declaration()
7617 cp_parser_linkage_specification (parser); in cp_parser_declaration()
7625 && cp_lexer_peek_nth_token (parser->lexer, 3)->type == CPP_GREATER) in cp_parser_declaration()
7626 cp_parser_explicit_specialization (parser); in cp_parser_declaration()
7629 cp_parser_template_declaration (parser, /*member_p=*/false); in cp_parser_declaration()
7632 cp_parser_explicit_instantiation (parser); in cp_parser_declaration()
7637 cp_parser_template_declaration (parser, /*member_p=*/false); in cp_parser_declaration()
7641 else if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_declaration()
7646 cp_parser_explicit_instantiation (parser); in cp_parser_declaration()
7652 && (cp_lexer_peek_nth_token (parser->lexer, 3)->type in cp_parser_declaration()
7657 cp_parser_namespace_definition (parser); in cp_parser_declaration()
7660 cp_parser_objc_declaration (parser); in cp_parser_declaration()
7665 cp_parser_block_declaration (parser, /*statement_p=*/false); in cp_parser_declaration()
7690 cp_parser_block_declaration (cp_parser *parser, in cp_parser_block_declaration() argument
7697 if (cp_parser_extension_opt (parser, &saved_pedantic)) in cp_parser_block_declaration()
7700 cp_parser_block_declaration (parser, statement_p); in cp_parser_block_declaration()
7709 token1 = cp_lexer_peek_token (parser->lexer); in cp_parser_block_declaration()
7715 cp_parser_commit_to_tentative_parse (parser); in cp_parser_block_declaration()
7716 cp_parser_asm_definition (parser); in cp_parser_block_declaration()
7721 cp_parser_namespace_alias_definition (parser); in cp_parser_block_declaration()
7729 cp_parser_commit_to_tentative_parse (parser); in cp_parser_block_declaration()
7732 token2 = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_block_declaration()
7734 cp_parser_using_directive (parser); in cp_parser_block_declaration()
7737 cp_parser_using_declaration (parser, in cp_parser_block_declaration()
7744 cp_parser_commit_to_tentative_parse (parser); in cp_parser_block_declaration()
7745 cp_parser_label_declaration (parser); in cp_parser_block_declaration()
7749 cp_parser_simple_declaration (parser, !statement_p); in cp_parser_block_declaration()
7765 cp_parser_simple_declaration (cp_parser* parser, in cp_parser_simple_declaration() argument
7788 cp_parser_decl_specifier_seq (parser, in cp_parser_simple_declaration()
7801 cp_parser_error (parser, "expected declaration"); in cp_parser_simple_declaration()
7812 && cp_parser_parse_and_diagnose_invalid_type_name (parser)) in cp_parser_simple_declaration()
7816 cp_parser_commit_to_tentative_parse (parser); in cp_parser_simple_declaration()
7825 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_simple_declaration()
7826 cp_parser_commit_to_tentative_parse (parser); in cp_parser_simple_declaration()
7831 while (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_simple_declaration()
7841 token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_declaration()
7843 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_declaration()
7849 decl = cp_parser_init_declarator (parser, &decl_specifiers, in cp_parser_simple_declaration()
7859 if (cp_parser_error_occurred (parser)) in cp_parser_simple_declaration()
7870 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_simple_declaration()
7880 token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_declaration()
7893 || cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_simple_declaration()
7894 cp_parser_error (parser, "expected %<,%> or %<;%>"); in cp_parser_simple_declaration()
7896 cp_parser_skip_to_end_of_statement (parser); in cp_parser_simple_declaration()
7898 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_simple_declaration()
7899 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_declaration()
7916 if (cp_parser_declares_only_class_p (parser)) in cp_parser_simple_declaration()
7923 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_simple_declaration()
7961 cp_parser_decl_specifier_seq (cp_parser* parser, in cp_parser_decl_specifier_seq() argument
7966 bool constructor_possible_p = !parser->in_declarator_p; in cp_parser_decl_specifier_seq()
7982 token = cp_lexer_peek_token (parser->lexer); in cp_parser_decl_specifier_seq()
7989 cp_parser_attributes_opt (parser)); in cp_parser_decl_specifier_seq()
8004 cp_lexer_purge_token (parser->lexer); in cp_parser_decl_specifier_seq()
8010 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
8021 cp_parser_function_specifier_opt (parser, decl_specs); in cp_parser_decl_specifier_seq()
8029 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
8034 cp_parser_commit_to_tentative_parse (parser); in cp_parser_decl_specifier_seq()
8055 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
8056 cp_parser_set_storage_class (parser, decl_specs, token->keyword); in cp_parser_decl_specifier_seq()
8060 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
8076 (parser, decl_specs->specs[(int) ds_friend] != 0))); in cp_parser_decl_specifier_seq()
8087 = cp_parser_type_specifier (parser, flags, in cp_parser_decl_specifier_seq()
8177 cp_parser_storage_class_specifier_opt (cp_parser* parser) in cp_parser_storage_class_specifier_opt() argument
8179 switch (cp_lexer_peek_token (parser->lexer)->keyword) in cp_parser_storage_class_specifier_opt()
8188 return cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_storage_class_specifier_opt()
8206 cp_parser_function_specifier_opt (cp_parser* parser, in cp_parser_function_specifier_opt() argument
8209 switch (cp_lexer_peek_token (parser->lexer)->keyword) in cp_parser_function_specifier_opt()
8236 return cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_function_specifier_opt()
8246 cp_parser_linkage_specification (cp_parser* parser) in cp_parser_linkage_specification() argument
8251 cp_parser_require_keyword (parser, RID_EXTERN, "`extern'"); in cp_parser_linkage_specification()
8254 linkage = cp_parser_string_literal (parser, false, false); in cp_parser_linkage_specification()
8262 cp_parser_error (parser, "invalid linkage-specification"); in cp_parser_linkage_specification()
8274 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_linkage_specification()
8277 cp_lexer_consume_token (parser->lexer); in cp_parser_linkage_specification()
8279 cp_parser_declaration_seq_opt (parser); in cp_parser_linkage_specification()
8281 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_linkage_specification()
8289 = parser->in_unbraced_linkage_specification_p; in cp_parser_linkage_specification()
8290 parser->in_unbraced_linkage_specification_p = true; in cp_parser_linkage_specification()
8291 cp_parser_declaration (parser); in cp_parser_linkage_specification()
8292 parser->in_unbraced_linkage_specification_p in cp_parser_linkage_specification()
8310 cp_parser_conversion_function_id (cp_parser* parser) in cp_parser_conversion_function_id() argument
8319 if (!cp_parser_require_keyword (parser, RID_OPERATOR, "`operator'")) in cp_parser_conversion_function_id()
8324 saved_scope = parser->scope; in cp_parser_conversion_function_id()
8325 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_conversion_function_id()
8326 saved_object_scope = parser->object_scope; in cp_parser_conversion_function_id()
8343 type = cp_parser_conversion_type_id (parser); in cp_parser_conversion_function_id()
8348 parser->scope = saved_scope; in cp_parser_conversion_function_id()
8349 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_conversion_function_id()
8350 parser->object_scope = saved_object_scope; in cp_parser_conversion_function_id()
8365 cp_parser_conversion_type_id (cp_parser* parser) in cp_parser_conversion_type_id() argument
8373 attributes = cp_parser_attributes_opt (parser); in cp_parser_conversion_type_id()
8375 cp_parser_type_specifier_seq (parser, /*is_condition=*/false, in cp_parser_conversion_type_id()
8381 declarator = cp_parser_conversion_declarator_opt (parser); in cp_parser_conversion_type_id()
8398 cp_parser_conversion_declarator_opt (cp_parser* parser) in cp_parser_conversion_declarator_opt() argument
8405 cp_parser_parse_tentatively (parser); in cp_parser_conversion_declarator_opt()
8407 code = cp_parser_ptr_operator (parser, &class_type, &cv_quals); in cp_parser_conversion_declarator_opt()
8409 if (cp_parser_parse_definitely (parser)) in cp_parser_conversion_declarator_opt()
8414 declarator = cp_parser_conversion_declarator_opt (parser); in cp_parser_conversion_declarator_opt()
8439 cp_parser_ctor_initializer_opt (cp_parser* parser) in cp_parser_ctor_initializer_opt() argument
8443 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_ctor_initializer_opt()
8453 cp_lexer_consume_token (parser->lexer); in cp_parser_ctor_initializer_opt()
8455 cp_parser_mem_initializer_list (parser); in cp_parser_ctor_initializer_opt()
8467 cp_parser_mem_initializer_list (cp_parser* parser) in cp_parser_mem_initializer_list() argument
8482 mem_initializer = cp_parser_mem_initializer (parser); in cp_parser_mem_initializer_list()
8490 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_mem_initializer_list()
8493 cp_lexer_consume_token (parser->lexer); in cp_parser_mem_initializer_list()
8517 cp_parser_mem_initializer (cp_parser* parser) in cp_parser_mem_initializer() argument
8524 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_mem_initializer()
8530 mem_initializer_id = cp_parser_mem_initializer_id (parser); in cp_parser_mem_initializer()
8536 = cp_parser_parenthesized_expression_list (parser, false, in cp_parser_mem_initializer()
8560 cp_parser_mem_initializer_id (cp_parser* parser) in cp_parser_mem_initializer_id() argument
8568 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TYPENAME)) in cp_parser_mem_initializer_id()
8572 cp_lexer_consume_token (parser->lexer); in cp_parser_mem_initializer_id()
8576 = (cp_parser_global_scope_opt (parser, in cp_parser_mem_initializer_id()
8592 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_mem_initializer_id()
8599 template_p = cp_parser_optional_template_keyword (parser); in cp_parser_mem_initializer_id()
8603 return cp_parser_class_name (parser, in cp_parser_mem_initializer_id()
8611 cp_parser_parse_tentatively (parser); in cp_parser_mem_initializer_id()
8613 id = cp_parser_class_name (parser, in cp_parser_mem_initializer_id()
8621 if (cp_parser_parse_definitely (parser)) in cp_parser_mem_initializer_id()
8624 return cp_parser_identifier (parser); in cp_parser_mem_initializer_id()
8638 cp_parser_operator_function_id (cp_parser* parser) in cp_parser_operator_function_id() argument
8641 if (!cp_parser_require_keyword (parser, RID_OPERATOR, "`operator'")) in cp_parser_operator_function_id()
8644 return cp_parser_operator (parser); in cp_parser_operator_function_id()
8663 cp_parser_operator (cp_parser* parser) in cp_parser_operator() argument
8669 token = cp_lexer_peek_token (parser->lexer); in cp_parser_operator()
8686 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
8689 token = cp_lexer_peek_token (parser->lexer); in cp_parser_operator()
8695 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
8697 cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'"); in cp_parser_operator()
8854 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
8856 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_operator()
8861 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
8863 cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'"); in cp_parser_operator()
8874 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
8878 cp_parser_error (parser, "expected operator"); in cp_parser_operator()
8907 cp_parser_template_declaration (cp_parser* parser, bool member_p) in cp_parser_template_declaration() argument
8910 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_EXPORT)) in cp_parser_template_declaration()
8913 cp_lexer_consume_token (parser->lexer); in cp_parser_template_declaration()
8918 cp_parser_template_declaration_after_export (parser, member_p); in cp_parser_template_declaration()
8931 cp_parser_template_parameter_list (cp_parser* parser) in cp_parser_template_parameter_list() argument
8943 parameter = cp_parser_template_parameter (parser, &is_non_type); in cp_parser_template_parameter_list()
8957 token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_parameter_list()
8962 cp_lexer_consume_token (parser->lexer); in cp_parser_template_parameter_list()
8980 cp_parser_template_parameter (cp_parser* parser, bool *is_non_type) in cp_parser_template_parameter() argument
8989 token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_parameter()
8992 return cp_parser_type_parameter (parser); in cp_parser_template_parameter()
9009 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_template_parameter()
9012 token = cp_lexer_peek_nth_token (parser->lexer, 3); in cp_parser_template_parameter()
9018 return cp_parser_type_parameter (parser); in cp_parser_template_parameter()
9031 = cp_parser_parameter_declaration (parser, /*template_parm_p=*/true, in cp_parser_template_parameter()
9058 cp_parser_type_parameter (cp_parser* parser) in cp_parser_type_parameter() argument
9064 token = cp_parser_require (parser, CPP_KEYWORD, in cp_parser_type_parameter()
9079 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_type_parameter()
9080 identifier = cp_parser_identifier (parser); in cp_parser_type_parameter()
9088 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_type_parameter()
9091 cp_lexer_consume_token (parser->lexer); in cp_parser_type_parameter()
9094 default_argument = cp_parser_type_id (parser); in cp_parser_type_parameter()
9113 cp_parser_require (parser, CPP_LESS, "`<'"); in cp_parser_type_parameter()
9115 parameter_list = cp_parser_template_parameter_list (parser); in cp_parser_type_parameter()
9117 cp_parser_require (parser, CPP_GREATER, "`>'"); in cp_parser_type_parameter()
9119 cp_parser_require_keyword (parser, RID_CLASS, "`class'"); in cp_parser_type_parameter()
9124 if (cp_lexer_next_token_is_not (parser->lexer, CPP_EQ) in cp_parser_type_parameter()
9125 && cp_lexer_next_token_is_not (parser->lexer, CPP_GREATER) in cp_parser_type_parameter()
9126 && cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_type_parameter()
9128 identifier = cp_parser_identifier (parser); in cp_parser_type_parameter()
9142 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_type_parameter()
9147 cp_lexer_consume_token (parser->lexer); in cp_parser_type_parameter()
9151 = cp_parser_id_expression (parser, in cp_parser_type_parameter()
9165 = cp_parser_lookup_name (parser, default_argument, in cp_parser_type_parameter()
9208 cp_parser_template_id (cp_parser *parser, in cp_parser_template_id() argument
9225 next_token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_id()
9231 check_value = cp_lexer_consume_token (parser->lexer)->u.tree_check_value; in cp_parser_template_id()
9254 (parser, 2))) in cp_parser_template_id()
9256 cp_parser_error (parser, "expected template-id"); in cp_parser_template_id()
9261 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_template_id()
9262 start_of_id = cp_lexer_token_position (parser->lexer, false); in cp_parser_template_id()
9268 template = cp_parser_template_name (parser, template_keyword_p, in cp_parser_template_id()
9281 next_token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_id()
9282 next_token_2 = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_template_id()
9288 cp_parser_parse_tentatively (parser); in cp_parser_template_id()
9293 cp_lexer_consume_token (parser->lexer); in cp_parser_template_id()
9295 arguments = cp_parser_enclosed_template_argument_list (parser); in cp_parser_template_id()
9296 if (!cp_parser_parse_definitely (parser)) in cp_parser_template_id()
9302 cp_parser_error (parser, "expected %<<%>"); in cp_parser_template_id()
9324 if (!cp_parser_require (parser, CPP_LESS, "`<'")) in cp_parser_template_id()
9330 arguments = cp_parser_enclosed_template_argument_list (parser); in cp_parser_template_id()
9346 && cp_lexer_next_token_is (parser->lexer, in cp_parser_template_id()
9370 cp_token *token = cp_lexer_token_at (parser->lexer, start_of_id); in cp_parser_template_id()
9382 cp_lexer_purge_tokens_after (parser->lexer, start_of_id); in cp_parser_template_id()
9388 if (cp_parser_error_occurred (parser) && template_id != error_mark_node) in cp_parser_template_id()
9434 cp_parser_template_name (cp_parser* parser, in cp_parser_template_name() argument
9446 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_OPERATOR)) in cp_parser_template_name()
9450 cp_parser_parse_tentatively (parser); in cp_parser_template_name()
9452 identifier = cp_parser_operator_function_id (parser); in cp_parser_template_name()
9454 if (!cp_parser_parse_definitely (parser)) in cp_parser_template_name()
9456 cp_parser_error (parser, "expected template-name"); in cp_parser_template_name()
9462 identifier = cp_parser_identifier (parser); in cp_parser_template_name()
9481 && cp_parser_nth_token_starts_template_argument_list_p (parser, 1)) in cp_parser_template_name()
9492 && parser->scope && TYPE_P (parser->scope) in cp_parser_template_name()
9494 && dependent_type_p (parser->scope) in cp_parser_template_name()
9497 && !constructor_name_p (identifier, parser->scope)) in cp_parser_template_name()
9504 parser->scope, identifier); in cp_parser_template_name()
9506 if (cp_parser_simulate_error (parser)) in cp_parser_template_name()
9507 start = cp_lexer_token_position (parser->lexer, true); in cp_parser_template_name()
9510 cp_lexer_consume_token (parser->lexer); in cp_parser_template_name()
9511 cp_parser_enclosed_template_argument_list (parser); in cp_parser_template_name()
9514 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_template_name()
9523 cp_lexer_purge_tokens_after (parser->lexer, start); in cp_parser_template_name()
9534 && (!parser->scope in cp_parser_template_name()
9535 || (TYPE_P (parser->scope) in cp_parser_template_name()
9536 && dependent_type_p (parser->scope)))) in cp_parser_template_name()
9541 decl = cp_parser_lookup_name (parser, identifier, in cp_parser_template_name()
9570 cp_parser_error (parser, "expected template-name"); in cp_parser_template_name()
9596 cp_parser_template_argument_list (cp_parser* parser) in cp_parser_template_argument_list() argument
9607 saved_in_template_argument_list_p = parser->in_template_argument_list_p; in cp_parser_template_argument_list()
9608 parser->in_template_argument_list_p = true; in cp_parser_template_argument_list()
9612 saved_ice_p = parser->integral_constant_expression_p; in cp_parser_template_argument_list()
9613 parser->integral_constant_expression_p = false; in cp_parser_template_argument_list()
9614 saved_non_ice_p = parser->non_integral_constant_expression_p; in cp_parser_template_argument_list()
9615 parser->non_integral_constant_expression_p = false; in cp_parser_template_argument_list()
9623 cp_lexer_consume_token (parser->lexer); in cp_parser_template_argument_list()
9626 argument = cp_parser_template_argument (parser); in cp_parser_template_argument_list()
9641 while (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)); in cp_parser_template_argument_list()
9650 parser->non_integral_constant_expression_p = saved_non_ice_p; in cp_parser_template_argument_list()
9651 parser->integral_constant_expression_p = saved_ice_p; in cp_parser_template_argument_list()
9652 parser->in_template_argument_list_p = saved_in_template_argument_list_p; in cp_parser_template_argument_list()
9673 cp_parser_template_argument (cp_parser* parser) in cp_parser_template_argument() argument
9692 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
9693 argument = cp_parser_type_id (parser); in cp_parser_template_argument()
9706 if (!cp_parser_error_occurred (parser) in cp_parser_template_argument()
9707 && cp_lexer_next_token_is (parser->lexer, CPP_RSHIFT)) in cp_parser_template_argument()
9710 cp_parser_abort_tentative_parse (parser); in cp_parser_template_argument()
9717 if (!cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
9718 cp_parser_error (parser, "expected template-argument"); in cp_parser_template_argument()
9720 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
9724 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
9726 argument = cp_parser_id_expression (parser, in cp_parser_template_argument()
9734 if (!cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
9735 cp_parser_error (parser, "expected template-argument"); in cp_parser_template_argument()
9736 if (!cp_parser_error_occurred (parser)) in cp_parser_template_argument()
9743 argument = cp_parser_lookup_name (parser, argument, in cp_parser_template_argument()
9751 cp_parser_error (parser, "expected template-name"); in cp_parser_template_argument()
9753 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
9769 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_template_argument()
9771 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
9772 argument = cp_parser_primary_expression (parser, in cp_parser_template_argument()
9778 || !cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
9779 cp_parser_simulate_error (parser); in cp_parser_template_argument()
9780 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
9786 address_p = cp_lexer_next_token_is (parser->lexer, CPP_AND); in cp_parser_template_argument()
9788 cp_lexer_consume_token (parser->lexer); in cp_parser_template_argument()
9790 token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_argument()
9797 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
9798 argument = cp_parser_primary_expression (parser, in cp_parser_template_argument()
9803 if (cp_parser_error_occurred (parser) in cp_parser_template_argument()
9804 || !cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
9805 cp_parser_abort_tentative_parse (parser); in cp_parser_template_argument()
9820 cp_parser_simulate_error (parser); in cp_parser_template_argument()
9835 cp_parser_simulate_error (parser); in cp_parser_template_argument()
9837 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
9849 cp_parser_error (parser, "invalid non-type template argument"); in cp_parser_template_argument()
9858 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
9859 argument = cp_parser_constant_expression (parser, in cp_parser_template_argument()
9865 if (!cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
9866 cp_parser_error (parser, "expected template-argument"); in cp_parser_template_argument()
9867 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
9873 return cp_parser_type_id (parser); in cp_parser_template_argument()
9899 cp_parser_explicit_instantiation (cp_parser* parser) in cp_parser_explicit_instantiation() argument
9907 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_explicit_instantiation()
9910 = cp_parser_storage_class_specifier_opt (parser); in cp_parser_explicit_instantiation()
9913 = cp_parser_function_specifier_opt (parser, in cp_parser_explicit_instantiation()
9918 cp_parser_require_keyword (parser, RID_TEMPLATE, "`template'"); in cp_parser_explicit_instantiation()
9926 cp_parser_decl_specifier_seq (parser, in cp_parser_explicit_instantiation()
9933 if (declares_class_or_enum && cp_parser_declares_only_class_p (parser)) in cp_parser_explicit_instantiation()
9952 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_explicit_instantiation()
9973 cp_parser_skip_to_end_of_statement (parser); in cp_parser_explicit_instantiation()
9979 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_explicit_instantiation()
9996 cp_parser_explicit_specialization (cp_parser* parser) in cp_parser_explicit_specialization() argument
10000 cp_parser_require_keyword (parser, RID_TEMPLATE, "`template'"); in cp_parser_explicit_specialization()
10002 cp_parser_require (parser, CPP_LESS, "`<'"); in cp_parser_explicit_specialization()
10004 cp_parser_require (parser, CPP_GREATER, "`>'"); in cp_parser_explicit_specialization()
10006 ++parser->num_template_parameter_lists; in cp_parser_explicit_specialization()
10025 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_explicit_specialization()
10031 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_explicit_specialization()
10033 if (cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_LESS in cp_parser_explicit_specialization()
10034 && cp_lexer_peek_nth_token (parser->lexer, 3)->type != CPP_GREATER) in cp_parser_explicit_specialization()
10035 cp_parser_template_declaration_after_export (parser, in cp_parser_explicit_specialization()
10038 cp_parser_explicit_specialization (parser); in cp_parser_explicit_specialization()
10042 cp_parser_single_declaration (parser, in cp_parser_explicit_specialization()
10053 --parser->num_template_parameter_lists; in cp_parser_explicit_specialization()
10090 cp_parser_type_specifier (cp_parser* parser, in cp_parser_type_specifier() argument
10109 token = cp_lexer_peek_token (parser->lexer); in cp_parser_type_specifier()
10118 type_spec = cp_parser_enum_specifier (parser); in cp_parser_type_specifier()
10140 cp_parser_parse_tentatively (parser); in cp_parser_type_specifier()
10142 type_spec = cp_parser_class_specifier (parser); in cp_parser_type_specifier()
10144 if (cp_parser_parse_definitely (parser)) in cp_parser_type_specifier()
10166 (parser, in cp_parser_type_specifier()
10210 return cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_type_specifier()
10215 type_spec = cp_parser_simple_type_specifier (parser, in cp_parser_type_specifier()
10223 cp_parser_error (parser, "expected type specifier"); in cp_parser_type_specifier()
10257 cp_parser_simple_type_specifier (cp_parser* parser, in cp_parser_simple_type_specifier() argument
10265 token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_type_specifier()
10318 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_type_specifier()
10320 type = cp_parser_sizeof_operand (parser, RID_TYPEOF); in cp_parser_simple_type_specifier()
10353 id = cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_simple_type_specifier()
10358 cp_parser_check_for_invalid_template_id (parser, type); in cp_parser_simple_type_specifier()
10372 cp_parser_parse_tentatively (parser); in cp_parser_simple_type_specifier()
10376 = (cp_parser_global_scope_opt (parser, in cp_parser_simple_type_specifier()
10381 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_simple_type_specifier()
10389 if (parser->scope in cp_parser_simple_type_specifier()
10390 && cp_parser_optional_template_keyword (parser)) in cp_parser_simple_type_specifier()
10393 type = cp_parser_template_id (parser, in cp_parser_simple_type_specifier()
10401 cp_parser_error (parser, "expected template-id for type"); in cp_parser_simple_type_specifier()
10407 type = cp_parser_type_name (parser); in cp_parser_simple_type_specifier()
10417 && !cp_parser_parse_definitely (parser)) in cp_parser_simple_type_specifier()
10427 cp_parser_error (parser, "expected type-name"); in cp_parser_simple_type_specifier()
10442 tree protos = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_simple_type_specifier()
10453 cp_parser_check_for_invalid_template_id (parser, TREE_TYPE (type)); in cp_parser_simple_type_specifier()
10475 cp_parser_type_name (cp_parser* parser) in cp_parser_type_name() argument
10481 cp_parser_parse_tentatively (parser); in cp_parser_type_name()
10483 type_decl = cp_parser_class_name (parser, in cp_parser_type_name()
10491 if (!cp_parser_parse_definitely (parser)) in cp_parser_type_name()
10494 identifier = cp_parser_identifier (parser); in cp_parser_type_name()
10499 type_decl = cp_parser_lookup_name_simple (parser, identifier); in cp_parser_type_name()
10505 tree protos = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_type_name()
10514 if (!cp_parser_simulate_error (parser)) in cp_parser_type_name()
10515 cp_parser_name_lookup_error (parser, identifier, type_decl, in cp_parser_type_name()
10524 && !parser->scope) in cp_parser_type_name()
10559 cp_parser_elaborated_type_specifier (cp_parser* parser, in cp_parser_elaborated_type_specifier() argument
10569 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_ENUM)) in cp_parser_elaborated_type_specifier()
10572 cp_lexer_consume_token (parser->lexer); in cp_parser_elaborated_type_specifier()
10576 attributes = cp_parser_attributes_opt (parser); in cp_parser_elaborated_type_specifier()
10579 else if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_elaborated_type_specifier()
10583 cp_lexer_consume_token (parser->lexer); in cp_parser_elaborated_type_specifier()
10593 tag_type = cp_parser_class_key (parser); in cp_parser_elaborated_type_specifier()
10597 attributes = cp_parser_attributes_opt (parser); in cp_parser_elaborated_type_specifier()
10601 cp_parser_global_scope_opt (parser, in cp_parser_elaborated_type_specifier()
10606 if (!cp_parser_nested_name_specifier (parser, in cp_parser_elaborated_type_specifier()
10617 cp_parser_nested_name_specifier_opt (parser, in cp_parser_elaborated_type_specifier()
10630 template_p = cp_parser_optional_template_keyword (parser); in cp_parser_elaborated_type_specifier()
10634 cp_parser_parse_tentatively (parser); in cp_parser_elaborated_type_specifier()
10636 decl = cp_parser_template_id (parser, template_p, in cp_parser_elaborated_type_specifier()
10641 if (!template_p && !cp_parser_parse_definitely (parser)) in cp_parser_elaborated_type_specifier()
10648 type = make_typename_type (parser->scope, decl, in cp_parser_elaborated_type_specifier()
10657 identifier = cp_parser_identifier (parser); in cp_parser_elaborated_type_specifier()
10661 parser->scope = NULL_TREE; in cp_parser_elaborated_type_specifier()
10667 && TREE_CODE (parser->scope) != NAMESPACE_DECL) in cp_parser_elaborated_type_specifier()
10668 return cp_parser_make_typename_type (parser, parser->scope, in cp_parser_elaborated_type_specifier()
10671 if (parser->scope) in cp_parser_elaborated_type_specifier()
10676 decl = cp_parser_lookup_name (parser, identifier, in cp_parser_elaborated_type_specifier()
10711 && parser->num_template_parameter_lists)); in cp_parser_elaborated_type_specifier()
10715 cp_parser_diagnose_invalid_type_name (parser, in cp_parser_elaborated_type_specifier()
10716 parser->scope, in cp_parser_elaborated_type_specifier()
10723 bool allow_template = (parser->num_template_parameter_lists in cp_parser_elaborated_type_specifier()
10786 && cp_lexer_next_token_is (parser->lexer, in cp_parser_elaborated_type_specifier()
10794 (parser->num_template_parameter_lists in cp_parser_elaborated_type_specifier()
10795 && (cp_parser_next_token_starts_class_definition_p (parser) in cp_parser_elaborated_type_specifier()
10796 || cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON))); in cp_parser_elaborated_type_specifier()
10799 if (!cp_parser_check_template_parameters (parser, in cp_parser_elaborated_type_specifier()
10819 else if (is_declaration && cp_parser_declares_only_class_p (parser)) in cp_parser_elaborated_type_specifier()
10831 cp_parser_check_for_invalid_template_id (parser, type); in cp_parser_elaborated_type_specifier()
10849 cp_parser_enum_specifier (cp_parser* parser) in cp_parser_enum_specifier() argument
10857 cp_parser_parse_tentatively (parser); in cp_parser_enum_specifier()
10863 cp_lexer_consume_token (parser->lexer); in cp_parser_enum_specifier()
10865 attributes = cp_parser_attributes_opt (parser); in cp_parser_enum_specifier()
10867 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_enum_specifier()
10868 identifier = cp_parser_identifier (parser); in cp_parser_enum_specifier()
10873 if (!cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_enum_specifier()
10874 cp_parser_simulate_error (parser); in cp_parser_enum_specifier()
10876 if (!cp_parser_parse_definitely (parser)) in cp_parser_enum_specifier()
10880 if (!cp_parser_check_type_definition (parser)) in cp_parser_enum_specifier()
10889 cp_lexer_consume_token (parser->lexer); in cp_parser_enum_specifier()
10893 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_enum_specifier()
10898 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_enum_specifier()
10899 cp_parser_enumerator_list (parser, type); in cp_parser_enum_specifier()
10902 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_enum_specifier()
10906 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_enum_specifier()
10908 tree trailing_attr = cp_parser_attributes_opt (parser); in cp_parser_enum_specifier()
10928 cp_parser_enumerator_list (cp_parser* parser, tree type) in cp_parser_enumerator_list() argument
10933 cp_parser_enumerator_definition (parser, type); in cp_parser_enumerator_list()
10937 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_enumerator_list()
10940 cp_lexer_consume_token (parser->lexer); in cp_parser_enumerator_list()
10942 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_enumerator_list()
10962 cp_parser_enumerator_definition (cp_parser* parser, tree type) in cp_parser_enumerator_definition() argument
10968 identifier = cp_parser_identifier (parser); in cp_parser_enumerator_definition()
10973 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_enumerator_definition()
10976 cp_lexer_consume_token (parser->lexer); in cp_parser_enumerator_definition()
10978 value = cp_parser_constant_expression (parser, in cp_parser_enumerator_definition()
10998 cp_parser_namespace_name (cp_parser* parser) in cp_parser_namespace_name() argument
11004 identifier = cp_parser_identifier (parser); in cp_parser_namespace_name()
11026 namespace_decl = cp_parser_lookup_name (parser, identifier, in cp_parser_namespace_name()
11036 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_namespace_name()
11038 cp_parser_error (parser, "expected namespace-name"); in cp_parser_namespace_name()
11065 cp_parser_namespace_definition (cp_parser* parser) in cp_parser_namespace_definition() argument
11070 cp_parser_require_keyword (parser, RID_NAMESPACE, "`namespace'"); in cp_parser_namespace_definition()
11076 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_namespace_definition()
11077 identifier = cp_parser_identifier (parser); in cp_parser_namespace_definition()
11082 attribs = cp_parser_attributes_opt (parser); in cp_parser_namespace_definition()
11085 cp_parser_require (parser, CPP_OPEN_BRACE, "`{'"); in cp_parser_namespace_definition()
11089 cp_parser_namespace_body (parser); in cp_parser_namespace_definition()
11093 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_namespace_definition()
11102 cp_parser_namespace_body (cp_parser* parser) in cp_parser_namespace_body() argument
11104 cp_parser_declaration_seq_opt (parser); in cp_parser_namespace_body()
11113 cp_parser_namespace_alias_definition (cp_parser* parser) in cp_parser_namespace_alias_definition() argument
11119 cp_parser_require_keyword (parser, RID_NAMESPACE, "`namespace'"); in cp_parser_namespace_alias_definition()
11121 identifier = cp_parser_identifier (parser); in cp_parser_namespace_alias_definition()
11125 cp_parser_require (parser, CPP_EQ, "`='"); in cp_parser_namespace_alias_definition()
11128 = cp_parser_qualified_namespace_specifier (parser); in cp_parser_namespace_alias_definition()
11130 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_namespace_alias_definition()
11145 cp_parser_qualified_namespace_specifier (cp_parser* parser) in cp_parser_qualified_namespace_specifier() argument
11148 cp_parser_global_scope_opt (parser, in cp_parser_qualified_namespace_specifier()
11152 cp_parser_nested_name_specifier_opt (parser, in cp_parser_qualified_namespace_specifier()
11158 return cp_parser_namespace_name (parser); in cp_parser_qualified_namespace_specifier()
11174 cp_parser_using_declaration (cp_parser* parser, in cp_parser_using_declaration() argument
11185 cp_parser_parse_tentatively (parser); in cp_parser_using_declaration()
11189 cp_parser_require_keyword (parser, RID_USING, "`using'"); in cp_parser_using_declaration()
11192 token = cp_lexer_peek_token (parser->lexer); in cp_parser_using_declaration()
11199 cp_lexer_consume_token (parser->lexer); in cp_parser_using_declaration()
11205 = (cp_parser_global_scope_opt (parser, in cp_parser_using_declaration()
11212 qscope = cp_parser_nested_name_specifier (parser, typename_p, in cp_parser_using_declaration()
11219 qscope = cp_parser_nested_name_specifier_opt (parser, in cp_parser_using_declaration()
11227 if (access_declaration_p && cp_parser_error_occurred (parser)) in cp_parser_using_declaration()
11231 return cp_parser_parse_definitely (parser); in cp_parser_using_declaration()
11234 identifier = cp_parser_unqualified_id (parser, in cp_parser_using_declaration()
11242 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_using_declaration()
11243 cp_parser_simulate_error (parser); in cp_parser_using_declaration()
11244 if (!cp_parser_parse_definitely (parser)) in cp_parser_using_declaration()
11263 decl = do_class_using_decl (parser->scope, identifier); in cp_parser_using_declaration()
11269 decl = cp_parser_lookup_name_simple (parser, identifier); in cp_parser_using_declaration()
11271 cp_parser_name_lookup_error (parser, identifier, decl, NULL); in cp_parser_using_declaration()
11280 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_using_declaration()
11292 cp_parser_using_directive (cp_parser* parser) in cp_parser_using_directive() argument
11298 cp_parser_require_keyword (parser, RID_USING, "`using'"); in cp_parser_using_directive()
11300 cp_parser_require_keyword (parser, RID_NAMESPACE, "`namespace'"); in cp_parser_using_directive()
11302 cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false); in cp_parser_using_directive()
11304 cp_parser_nested_name_specifier_opt (parser, in cp_parser_using_directive()
11310 namespace_decl = cp_parser_namespace_name (parser); in cp_parser_using_directive()
11312 attribs = cp_parser_attributes_opt (parser); in cp_parser_using_directive()
11316 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_using_directive()
11336 cp_parser_asm_definition (cp_parser* parser) in cp_parser_asm_definition() argument
11347 cp_parser_require_keyword (parser, RID_ASM, "`asm'"); in cp_parser_asm_definition()
11349 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_asm_definition()
11350 && cp_lexer_next_token_is_keyword (parser->lexer, RID_VOLATILE)) in cp_parser_asm_definition()
11355 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
11358 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_asm_definition()
11361 string = cp_parser_string_literal (parser, false, false); in cp_parser_asm_definition()
11364 cp_parser_skip_to_closing_parenthesis (parser, true, false, in cp_parser_asm_definition()
11374 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_asm_definition()
11375 && parser->in_function_body in cp_parser_asm_definition()
11376 && (cp_lexer_next_token_is (parser->lexer, CPP_COLON) in cp_parser_asm_definition()
11377 || cp_lexer_next_token_is (parser->lexer, CPP_SCOPE))) in cp_parser_asm_definition()
11386 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_asm_definition()
11389 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
11391 if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
11393 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
11395 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
11397 outputs = cp_parser_asm_operand_list (parser); in cp_parser_asm_definition()
11401 else if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_asm_definition()
11407 || cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_asm_definition()
11410 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
11412 if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
11414 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
11416 inputs = cp_parser_asm_operand_list (parser); in cp_parser_asm_definition()
11418 else if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_asm_definition()
11424 || cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_asm_definition()
11427 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
11429 if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
11431 clobbers = cp_parser_asm_clobber_list (parser); in cp_parser_asm_definition()
11435 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_asm_definition()
11436 cp_parser_skip_to_closing_parenthesis (parser, true, false, in cp_parser_asm_definition()
11438 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_asm_definition()
11441 if (parser->in_function_body) in cp_parser_asm_definition()
11500 cp_parser_init_declarator (cp_parser* parser, in cp_parser_init_declarator() argument
11543 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_init_declarator()
11556 if (!cp_parser_check_declarator_template_parameters (parser, declarator)) in cp_parser_init_declarator()
11570 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_init_declarator()
11573 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_init_declarator()
11575 attributes = cp_parser_attributes_opt (parser); in cp_parser_init_declarator()
11584 token = cp_lexer_peek_token (parser->lexer); in cp_parser_init_declarator()
11593 cp_parser_error (parser, in cp_parser_init_declarator()
11610 decl = cp_parser_save_member_function_body (parser, in cp_parser_init_declarator()
11617 (parser, decl_specifiers, prefix_attributes, declarator)); in cp_parser_init_declarator()
11633 cp_parser_error (parser, in cp_parser_init_declarator()
11652 cp_parser_error (parser, "expected initializer"); in cp_parser_init_declarator()
11662 cp_parser_commit_to_tentative_parse (parser); in cp_parser_init_declarator()
11671 cp_parser_error (parser, "invalid type in declaration"); in cp_parser_init_declarator()
11683 if (parser->in_unbraced_linkage_specification_p) in cp_parser_init_declarator()
11730 initializer = cp_parser_pure_specifier (parser); in cp_parser_init_declarator()
11738 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_init_declarator()
11745 initializer = cp_parser_initializer (parser, in cp_parser_init_declarator()
11754 if (cp_parser_allow_gnu_extensions_p (parser) && is_parenthesized_init) in cp_parser_init_declarator()
11755 if (cp_parser_attributes_opt (parser)) in cp_parser_init_declarator()
11773 cp_parser_save_default_args (parser, decl); in cp_parser_init_declarator()
11798 cp_parser_cv_qualifier_or_attribute_seq_opt (cp_parser *parser, tree *attrs_p) in cp_parser_cv_qualifier_or_attribute_seq_opt() argument
11808 token = cp_lexer_peek_token (parser->lexer); in cp_parser_cv_qualifier_or_attribute_seq_opt()
11814 cp_parser_attributes_opt (parser)); in cp_parser_cv_qualifier_or_attribute_seq_opt()
11818 q = cp_parser_cv_qualifier_seq_opt (parser); in cp_parser_cv_qualifier_or_attribute_seq_opt()
11873 cp_parser_declarator (cp_parser* parser, in cp_parser_declarator() argument
11891 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_declarator()
11892 attributes = cp_parser_attributes_opt (parser); in cp_parser_declarator()
11895 token = cp_lexer_peek_token (parser->lexer); in cp_parser_declarator()
11904 cp_lexer_consume_token (parser->lexer); in cp_parser_declarator()
11907 quals = cp_parser_cv_qualifier_or_attribute_seq_opt (parser, &attrs); in cp_parser_declarator()
11909 inner = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_EITHER, in cp_parser_declarator()
11920 cp_parser_parse_tentatively (parser); in cp_parser_declarator()
11922 code = cp_parser_ptr_operator (parser, in cp_parser_declarator()
11926 if (cp_parser_parse_definitely (parser)) in cp_parser_declarator()
11935 cp_parser_parse_tentatively (parser); in cp_parser_declarator()
11938 declarator = cp_parser_declarator (parser, dcl_kind, in cp_parser_declarator()
11946 && !cp_parser_parse_definitely (parser)) in cp_parser_declarator()
11963 *parenthesized_p = cp_lexer_next_token_is (parser->lexer, in cp_parser_declarator()
11965 declarator = cp_parser_direct_declarator (parser, dcl_kind, in cp_parser_declarator()
12015 cp_parser_direct_declarator (cp_parser* parser, in cp_parser_direct_declarator() argument
12023 bool saved_default_arg_ok_p = parser->default_arg_ok_p; in cp_parser_direct_declarator()
12024 bool saved_in_declarator_p = parser->in_declarator_p; in cp_parser_direct_declarator()
12031 token = cp_lexer_peek_token (parser->lexer); in cp_parser_direct_declarator()
12084 cp_parser_parse_tentatively (parser); in cp_parser_direct_declarator()
12087 cp_lexer_consume_token (parser->lexer); in cp_parser_direct_declarator()
12092 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
12093 parser->in_declarator_p = true; in cp_parser_direct_declarator()
12099 = parser->num_template_parameter_lists; in cp_parser_direct_declarator()
12100 parser->num_template_parameter_lists = 0; in cp_parser_direct_declarator()
12103 params = cp_parser_parameter_declaration_clause (parser); in cp_parser_direct_declarator()
12105 parser->num_template_parameter_lists in cp_parser_direct_declarator()
12110 if (member_p || cp_parser_parse_definitely (parser)) in cp_parser_direct_declarator()
12119 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_direct_declarator()
12125 cv_quals = cp_parser_cv_qualifier_seq_opt (parser); in cp_parser_direct_declarator()
12133 = cp_parser_exception_specification_opt (parser); in cp_parser_direct_declarator()
12143 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
12156 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_direct_declarator()
12157 parser->in_declarator_p = saved_in_declarator_p; in cp_parser_direct_declarator()
12160 cp_lexer_consume_token (parser->lexer); in cp_parser_direct_declarator()
12162 saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_direct_declarator()
12163 parser->in_type_id_in_expr_p = true; in cp_parser_direct_declarator()
12165 = cp_parser_declarator (parser, dcl_kind, ctor_dtor_or_conv_p, in cp_parser_direct_declarator()
12168 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_direct_declarator()
12171 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_direct_declarator()
12192 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
12193 parser->in_declarator_p = true; in cp_parser_direct_declarator()
12195 cp_lexer_consume_token (parser->lexer); in cp_parser_direct_declarator()
12197 token = cp_lexer_peek_token (parser->lexer); in cp_parser_direct_declarator()
12205 = cp_parser_constant_expression (parser, in cp_parser_direct_declarator()
12213 else if (!parser->in_function_body) in cp_parser_direct_declarator()
12222 if (!cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'")) in cp_parser_direct_declarator()
12243 cp_parser_parse_tentatively (parser); in cp_parser_direct_declarator()
12245 = cp_parser_declarator_id (parser, /*optional_p=*/abstract_ok); in cp_parser_direct_declarator()
12246 qualifying_scope = parser->scope; in cp_parser_direct_declarator()
12249 if (!cp_parser_parse_definitely (parser)) in cp_parser_direct_declarator()
12256 cp_parser_error (parser, "expected unqualified-id"); in cp_parser_direct_declarator()
12338 cp_parser_error (parser, "invalid declarator"); in cp_parser_direct_declarator()
12376 parser->in_declarator_p = true; in cp_parser_direct_declarator()
12381 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_direct_declarator()
12383 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
12396 cp_parser_error (parser, "expected declarator"); in cp_parser_direct_declarator()
12402 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_direct_declarator()
12403 parser->in_declarator_p = saved_in_declarator_p; in cp_parser_direct_declarator()
12430 cp_parser_ptr_operator (cp_parser* parser, in cp_parser_ptr_operator() argument
12443 token = cp_lexer_peek_token (parser->lexer); in cp_parser_ptr_operator()
12451 cp_lexer_consume_token (parser->lexer); in cp_parser_ptr_operator()
12458 || cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_ptr_operator()
12459 *cv_quals = cp_parser_cv_qualifier_seq_opt (parser); in cp_parser_ptr_operator()
12464 cp_parser_parse_tentatively (parser); in cp_parser_ptr_operator()
12466 cp_parser_global_scope_opt (parser, in cp_parser_ptr_operator()
12469 cp_parser_nested_name_specifier (parser, in cp_parser_ptr_operator()
12476 if (!cp_parser_error_occurred (parser) in cp_parser_ptr_operator()
12477 && cp_parser_require (parser, CPP_MULT, "`*'")) in cp_parser_ptr_operator()
12482 if (TREE_CODE (parser->scope) == NAMESPACE_DECL) in cp_parser_ptr_operator()
12483 error ("%qD is a namespace", parser->scope); in cp_parser_ptr_operator()
12488 *type = parser->scope; in cp_parser_ptr_operator()
12490 parser->scope = NULL_TREE; in cp_parser_ptr_operator()
12491 parser->qualifying_scope = NULL_TREE; in cp_parser_ptr_operator()
12492 parser->object_scope = NULL_TREE; in cp_parser_ptr_operator()
12494 *cv_quals = cp_parser_cv_qualifier_seq_opt (parser); in cp_parser_ptr_operator()
12498 if (!cp_parser_parse_definitely (parser)) in cp_parser_ptr_operator()
12499 cp_parser_error (parser, "expected ptr-operator"); in cp_parser_ptr_operator()
12522 cp_parser_cv_qualifier_seq_opt (cp_parser* parser) in cp_parser_cv_qualifier_seq_opt() argument
12532 token = cp_lexer_peek_token (parser->lexer); in cp_parser_cv_qualifier_seq_opt()
12559 cp_lexer_purge_token (parser->lexer); in cp_parser_cv_qualifier_seq_opt()
12563 cp_lexer_consume_token (parser->lexer); in cp_parser_cv_qualifier_seq_opt()
12585 cp_parser_declarator_id (cp_parser* parser, bool optional_p) in cp_parser_declarator_id() argument
12602 id = cp_parser_id_expression (parser, in cp_parser_declarator_id()
12621 cp_parser_type_id (cp_parser* parser) in cp_parser_type_id() argument
12627 cp_parser_type_specifier_seq (parser, /*is_condition=*/false, in cp_parser_type_id()
12633 cp_parser_parse_tentatively (parser); in cp_parser_type_id()
12636 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_ABSTRACT, NULL, in cp_parser_type_id()
12640 if (!cp_parser_parse_definitely (parser)) in cp_parser_type_id()
12662 cp_parser_type_specifier_seq (cp_parser* parser, in cp_parser_type_specifier_seq() argument
12679 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_ATTRIBUTE)) in cp_parser_type_specifier_seq()
12683 cp_parser_attributes_opt (parser)); in cp_parser_type_specifier_seq()
12688 type_specifier = cp_parser_type_specifier (parser, in cp_parser_type_specifier_seq()
12700 cp_parser_error (parser, "expected type-specifier"); in cp_parser_type_specifier_seq()
12744 cp_parser_parameter_declaration_clause (cp_parser* parser) in cp_parser_parameter_declaration_clause() argument
12752 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration_clause()
12757 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
12773 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_parameter_declaration_clause()
12777 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
12783 parameters = cp_parser_parameter_declaration_list (parser, &is_error); in cp_parser_parameter_declaration_clause()
12791 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration_clause()
12796 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
12799 = (cp_parser_require (parser, CPP_ELLIPSIS, "`...'") != NULL); in cp_parser_parameter_declaration_clause()
12806 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
12832 cp_parser_parameter_declaration_list (cp_parser* parser, bool *is_error) in cp_parser_parameter_declaration_list() argument
12844 = parser->in_unbraced_linkage_specification_p; in cp_parser_parameter_declaration_list()
12845 parser->in_unbraced_linkage_specification_p = false; in cp_parser_parameter_declaration_list()
12854 = cp_parser_parameter_declaration (parser, in cp_parser_parameter_declaration_list()
12871 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN) in cp_parser_parameter_declaration_list()
12872 || cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS) in cp_parser_parameter_declaration_list()
12874 || cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON) in cp_parser_parameter_declaration_list()
12875 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_parameter_declaration_list()
12878 else if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_parameter_declaration_list()
12883 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_parameter_declaration_list()
12889 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_list()
12902 if (!parser->in_template_argument_list_p in cp_parser_parameter_declaration_list()
12903 && !parser->in_type_id_in_expr_p in cp_parser_parameter_declaration_list()
12904 && cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_parameter_declaration_list()
12910 cp_parser_commit_to_tentative_parse (parser); in cp_parser_parameter_declaration_list()
12914 cp_parser_error (parser, "expected %<,%> or %<...%>"); in cp_parser_parameter_declaration_list()
12915 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_parameter_declaration_list()
12916 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_parameter_declaration_list()
12924 parser->in_unbraced_linkage_specification_p in cp_parser_parameter_declaration_list()
12948 cp_parser_parameter_declaration (cp_parser *parser, in cp_parser_parameter_declaration() argument
12971 saved_message = parser->type_definition_forbidden_message; in cp_parser_parameter_declaration()
12972 parser->type_definition_forbidden_message in cp_parser_parameter_declaration()
12976 cp_parser_decl_specifier_seq (parser, in cp_parser_parameter_declaration()
12982 if (cp_parser_error_occurred (parser)) in cp_parser_parameter_declaration()
12984 parser->type_definition_forbidden_message = saved_message; in cp_parser_parameter_declaration()
12989 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration()
13005 bool saved_default_arg_ok_p = parser->default_arg_ok_p; in cp_parser_parameter_declaration()
13006 parser->default_arg_ok_p = false; in cp_parser_parameter_declaration()
13012 if (!parser->in_template_argument_list_p in cp_parser_parameter_declaration()
13020 && !parser->in_type_id_in_expr_p in cp_parser_parameter_declaration()
13021 && cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_parameter_declaration()
13022 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_parameter_declaration()
13023 cp_parser_commit_to_tentative_parse (parser); in cp_parser_parameter_declaration()
13025 declarator = cp_parser_declarator (parser, in cp_parser_parameter_declaration()
13030 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_parameter_declaration()
13034 cp_parser_attributes_opt (parser)); in cp_parser_parameter_declaration()
13039 parser->type_definition_forbidden_message = saved_message; in cp_parser_parameter_declaration()
13042 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_parameter_declaration()
13046 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration()
13059 first_token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration()
13065 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration()
13130 token = cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration()
13149 = parser->greater_than_is_operator_p; in cp_parser_parameter_declaration()
13150 parser->greater_than_is_operator_p = greater_than_is_operator_p; in cp_parser_parameter_declaration()
13154 = parser->local_variables_forbidden_p; in cp_parser_parameter_declaration()
13155 parser->local_variables_forbidden_p = true; in cp_parser_parameter_declaration()
13166 = cp_parser_assignment_expression (parser, /*cast_p=*/false); in cp_parser_parameter_declaration()
13171 parser->greater_than_is_operator_p in cp_parser_parameter_declaration()
13173 parser->local_variables_forbidden_p in cp_parser_parameter_declaration()
13176 if (!parser->default_arg_ok_p) in cp_parser_parameter_declaration()
13201 cp_parser_function_body (cp_parser *parser) in cp_parser_function_body() argument
13204 cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_function_body()
13211 cp_parser_ctor_initializer_opt_and_function_body (cp_parser *parser) in cp_parser_ctor_initializer_opt_and_function_body() argument
13219 ctor_initializer_p = cp_parser_ctor_initializer_opt (parser); in cp_parser_ctor_initializer_opt_and_function_body()
13221 cp_parser_function_body (parser); in cp_parser_ctor_initializer_opt_and_function_body()
13244 cp_parser_initializer (cp_parser* parser, bool* is_parenthesized_init, in cp_parser_initializer() argument
13251 token = cp_lexer_peek_token (parser->lexer); in cp_parser_initializer()
13262 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer()
13264 init = cp_parser_initializer_clause (parser, non_constant_p); in cp_parser_initializer()
13267 init = cp_parser_parenthesized_expression_list (parser, false, in cp_parser_initializer()
13273 cp_parser_error (parser, "expected initializer"); in cp_parser_initializer()
13300 cp_parser_initializer_clause (cp_parser* parser, bool* non_constant_p) in cp_parser_initializer_clause() argument
13309 if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_initializer_clause()
13312 = cp_parser_constant_expression (parser, in cp_parser_initializer_clause()
13321 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer_clause()
13325 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_initializer_clause()
13329 = cp_parser_initializer_list (parser, non_constant_p); in cp_parser_initializer_clause()
13331 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_initializer_clause()
13332 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer_clause()
13335 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_initializer_clause()
13359 cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p) in VEC()
13377 if (cp_parser_allow_gnu_extensions_p (parser) in VEC()
13378 && cp_lexer_next_token_is (parser->lexer, CPP_NAME) in VEC()
13379 && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_COLON) in VEC()
13385 identifier = cp_lexer_consume_token (parser->lexer)->u.value; in VEC()
13387 cp_lexer_consume_token (parser->lexer); in VEC()
13393 initializer = cp_parser_initializer_clause (parser, in VEC()
13404 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in VEC()
13408 token = cp_lexer_peek_nth_token (parser->lexer, 2); in VEC()
13416 cp_lexer_consume_token (parser->lexer); in VEC()
13442 cp_parser_class_name (cp_parser *parser, in cp_parser_class_name() argument
13456 token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_name()
13459 cp_parser_error (parser, "expected class-name"); in cp_parser_class_name()
13465 scope = parser->scope; in cp_parser_class_name()
13476 && !cp_parser_nth_token_starts_template_argument_list_p (parser, 2)) in cp_parser_class_name()
13483 identifier_token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_name()
13485 identifier = cp_parser_identifier (parser); in cp_parser_class_name()
13502 cp_parser_simulate_error (parser); in cp_parser_class_name()
13513 if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_class_name()
13516 decl = cp_parser_lookup_name (parser, identifier, in cp_parser_class_name()
13526 if (cp_parser_parsing_tentatively (parser)) in cp_parser_class_name()
13529 cp_parser_simulate_error (parser); in cp_parser_class_name()
13538 decl = cp_parser_template_id (parser, template_keyword_p, in cp_parser_class_name()
13559 && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_class_name()
13581 cp_parser_error (parser, "expected class-name"); in cp_parser_class_name()
13594 cp_parser_class_specifier (cp_parser* parser) in cp_parser_class_specifier() argument
13610 type = cp_parser_class_head (parser, in cp_parser_class_specifier()
13618 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_class_specifier()
13624 if (!cp_parser_require (parser, CPP_OPEN_BRACE, "`{'")) in cp_parser_class_specifier()
13634 cp_parser_skip_to_closing_brace (parser); in cp_parser_class_specifier()
13638 cp_lexer_consume_token (parser->lexer); in cp_parser_class_specifier()
13644 cp_parser_check_type_definition (parser); in cp_parser_class_specifier()
13646 ++parser->num_classes_being_defined; in cp_parser_class_specifier()
13650 = parser->num_template_parameter_lists; in cp_parser_class_specifier()
13651 parser->num_template_parameter_lists = 0; in cp_parser_class_specifier()
13653 saved_in_function_body = parser->in_function_body; in cp_parser_class_specifier()
13654 parser->in_function_body = false; in cp_parser_class_specifier()
13666 cp_parser_skip_to_closing_brace (parser); in cp_parser_class_specifier()
13669 cp_parser_member_specification_opt (parser); in cp_parser_class_specifier()
13672 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_class_specifier()
13675 token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_specifier()
13678 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_class_specifier()
13679 attributes = cp_parser_attributes_opt (parser); in cp_parser_class_specifier()
13704 if (--parser->num_classes_being_defined == 0) in cp_parser_class_specifier()
13721 for (TREE_PURPOSE (parser->unparsed_functions_queues) in cp_parser_class_specifier()
13722 = nreverse (TREE_PURPOSE (parser->unparsed_functions_queues)); in cp_parser_class_specifier()
13723 (queue_entry = TREE_PURPOSE (parser->unparsed_functions_queues)); in cp_parser_class_specifier()
13724 TREE_PURPOSE (parser->unparsed_functions_queues) in cp_parser_class_specifier()
13725 = TREE_CHAIN (TREE_PURPOSE (parser->unparsed_functions_queues))) in cp_parser_class_specifier()
13740 cp_parser_late_parsing_default_args (parser, fn); in cp_parser_class_specifier()
13747 for (TREE_VALUE (parser->unparsed_functions_queues) in cp_parser_class_specifier()
13748 = nreverse (TREE_VALUE (parser->unparsed_functions_queues)); in cp_parser_class_specifier()
13749 (queue_entry = TREE_VALUE (parser->unparsed_functions_queues)); in cp_parser_class_specifier()
13750 TREE_VALUE (parser->unparsed_functions_queues) in cp_parser_class_specifier()
13751 = TREE_CHAIN (TREE_VALUE (parser->unparsed_functions_queues))) in cp_parser_class_specifier()
13756 cp_parser_late_parsing_for_member (parser, fn); in cp_parser_class_specifier()
13764 parser->in_function_body = saved_in_function_body; in cp_parser_class_specifier()
13765 parser->num_template_parameter_lists in cp_parser_class_specifier()
13796 cp_parser_class_head (cp_parser* parser, in cp_parser_class_head() argument
13820 class_key = cp_parser_class_key (parser); in cp_parser_class_head()
13825 attributes = cp_parser_attributes_opt (parser); in cp_parser_class_head()
13836 if (cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false)) in cp_parser_class_head()
13844 = cp_parser_nested_name_specifier_opt (parser, in cp_parser_class_head()
13870 cp_parser_parse_tentatively (parser); in cp_parser_class_head()
13871 type = cp_parser_class_name (parser, in cp_parser_class_head()
13879 if (!cp_parser_parse_definitely (parser)) in cp_parser_class_head()
13882 id = cp_parser_identifier (parser); in cp_parser_class_head()
13914 cp_parser_parse_tentatively (parser); in cp_parser_class_head()
13916 id = cp_parser_template_id (parser, in cp_parser_class_head()
13921 if (!cp_parser_parse_definitely (parser)) in cp_parser_class_head()
13923 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_class_head()
13924 id = cp_parser_identifier (parser); in cp_parser_class_head()
13938 cp_parser_check_for_invalid_template_id (parser, id); in cp_parser_class_head()
13944 if (!cp_parser_next_token_starts_class_definition_p (parser)) in cp_parser_class_head()
13946 cp_parser_error (parser, "expected %<{%> or %<:%>"); in cp_parser_class_head()
13952 cp_parser_commit_to_tentative_parse (parser); in cp_parser_class_head()
13955 cp_parser_error (parser, in cp_parser_class_head()
13958 cp_parser_error (parser, in cp_parser_class_head()
13999 && parser->num_template_parameter_lists == 0 in cp_parser_class_head()
14006 ++parser->num_template_parameter_lists; in cp_parser_class_head()
14014 if (!cp_parser_check_template_parameters (parser, num_templates)) in cp_parser_class_head()
14050 cp_parser_error (parser, "could not resolve typename type"); in cp_parser_class_head()
14081 parser->num_template_parameter_lists); in cp_parser_class_head()
14112 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_class_head()
14113 *bases = cp_parser_base_clause (parser); in cp_parser_class_head()
14124 --parser->num_template_parameter_lists; in cp_parser_class_head()
14141 cp_parser_class_key (cp_parser* parser) in cp_parser_class_key() argument
14147 token = cp_parser_require (parser, CPP_KEYWORD, "class-key"); in cp_parser_class_key()
14154 cp_parser_error (parser, "expected class-key"); in cp_parser_class_key()
14165 cp_parser_member_specification_opt (cp_parser* parser) in cp_parser_member_specification_opt() argument
14173 token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_specification_opt()
14188 cp_lexer_consume_token (parser->lexer); in cp_parser_member_specification_opt()
14192 cp_parser_require (parser, CPP_COLON, "`:'"); in cp_parser_member_specification_opt()
14199 cp_parser_pragma (parser, pragma_external); in cp_parser_member_specification_opt()
14205 cp_parser_member_declaration (parser); in cp_parser_member_specification_opt()
14239 cp_parser_member_declaration (cp_parser* parser) in cp_parser_member_declaration() argument
14250 if (cp_parser_extension_opt (parser, &saved_pedantic)) in cp_parser_member_declaration()
14253 cp_parser_member_declaration (parser); in cp_parser_member_declaration()
14261 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_member_declaration()
14265 if (cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_LESS in cp_parser_member_declaration()
14266 && cp_lexer_peek_nth_token (parser->lexer, 3)->type == CPP_GREATER) in cp_parser_member_declaration()
14267 cp_parser_explicit_specialization (parser); in cp_parser_member_declaration()
14269 cp_parser_template_declaration (parser, /*member_p=*/true); in cp_parser_member_declaration()
14275 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_USING)) in cp_parser_member_declaration()
14278 cp_parser_using_declaration (parser, in cp_parser_member_declaration()
14284 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AT_DEFS)) in cp_parser_member_declaration()
14287 tree ivar_chains = cp_parser_objc_defs_expression (parser); in cp_parser_member_declaration()
14299 if (cp_parser_using_declaration (parser, /*access_declaration=*/true)) in cp_parser_member_declaration()
14303 cp_parser_decl_specifier_seq (parser, in cp_parser_member_declaration()
14311 && cp_parser_parse_and_diagnose_invalid_type_name (parser)) in cp_parser_member_declaration()
14315 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_member_declaration()
14328 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
14396 while (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_member_declaration()
14402 token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
14407 && cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_member_declaration()
14416 if (cp_lexer_peek_token (parser->lexer)->type != CPP_COLON) in cp_parser_member_declaration()
14417 identifier = cp_parser_identifier (parser); in cp_parser_member_declaration()
14422 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
14425 = cp_parser_constant_expression (parser, in cp_parser_member_declaration()
14430 attributes = cp_parser_attributes_opt (parser); in cp_parser_member_declaration()
14457 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_member_declaration()
14467 cp_parser_skip_to_end_of_statement (parser); in cp_parser_member_declaration()
14473 if (cp_lexer_next_token_is (parser->lexer, in cp_parser_member_declaration()
14475 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
14484 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_member_declaration()
14486 attributes = cp_parser_attributes_opt (parser); in cp_parser_member_declaration()
14500 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_member_declaration()
14516 initializer = cp_parser_pure_specifier (parser); in cp_parser_member_declaration()
14519 initializer = cp_parser_constant_initializer (parser); in cp_parser_member_declaration()
14531 (cp_lexer_peek_token (parser->lexer))) in cp_parser_member_declaration()
14540 decl = cp_parser_save_member_function_body (parser, in cp_parser_member_declaration()
14548 token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
14551 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
14570 parser->scope = NULL_TREE; in cp_parser_member_declaration()
14571 parser->qualifying_scope = NULL_TREE; in cp_parser_member_declaration()
14572 parser->object_scope = NULL_TREE; in cp_parser_member_declaration()
14574 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_member_declaration()
14575 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
14577 else if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_member_declaration()
14580 cp_parser_error (parser, "expected %<;%>"); in cp_parser_member_declaration()
14582 cp_parser_skip_to_end_of_statement (parser); in cp_parser_member_declaration()
14594 cp_parser_save_default_args (parser, decl); in cp_parser_member_declaration()
14599 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_member_declaration()
14611 cp_parser_pure_specifier (cp_parser* parser) in cp_parser_pure_specifier() argument
14616 if (!cp_parser_require (parser, CPP_EQ, "`='")) in cp_parser_pure_specifier()
14619 token = cp_lexer_consume_token (parser->lexer); in cp_parser_pure_specifier()
14623 cp_parser_error (parser, in cp_parser_pure_specifier()
14625 cp_parser_skip_to_end_of_statement (parser); in cp_parser_pure_specifier()
14645 cp_parser_constant_initializer (cp_parser* parser) in cp_parser_constant_initializer() argument
14648 if (!cp_parser_require (parser, CPP_EQ, "`='")) in cp_parser_constant_initializer()
14656 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_constant_initializer()
14658 cp_parser_error (parser, in cp_parser_constant_initializer()
14661 cp_lexer_consume_token (parser->lexer); in cp_parser_constant_initializer()
14663 cp_parser_skip_to_closing_brace (parser); in cp_parser_constant_initializer()
14665 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_constant_initializer()
14670 return cp_parser_constant_expression (parser, in cp_parser_constant_initializer()
14694 cp_parser_base_clause (cp_parser* parser) in cp_parser_base_clause() argument
14699 cp_parser_require (parser, CPP_COLON, "`:'"); in cp_parser_base_clause()
14708 base = cp_parser_base_specifier (parser); in cp_parser_base_clause()
14716 token = cp_lexer_peek_token (parser->lexer); in cp_parser_base_clause()
14721 cp_lexer_consume_token (parser->lexer); in cp_parser_base_clause()
14727 parser->scope = NULL_TREE; in cp_parser_base_clause()
14728 parser->qualifying_scope = NULL_TREE; in cp_parser_base_clause()
14729 parser->object_scope = NULL_TREE; in cp_parser_base_clause()
14749 cp_parser_base_specifier (cp_parser* parser) in cp_parser_base_specifier() argument
14764 token = cp_lexer_peek_token (parser->lexer); in cp_parser_base_specifier()
14772 cp_parser_error (parser, in cp_parser_base_specifier()
14780 cp_lexer_consume_token (parser->lexer); in cp_parser_base_specifier()
14792 cp_parser_error (parser, in cp_parser_base_specifier()
14800 cp_lexer_consume_token (parser->lexer); in cp_parser_base_specifier()
14812 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TYPENAME)) in cp_parser_base_specifier()
14819 cp_lexer_consume_token (parser->lexer); in cp_parser_base_specifier()
14823 cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false); in cp_parser_base_specifier()
14836 cp_parser_nested_name_specifier_opt (parser, in cp_parser_base_specifier()
14843 class_scope_p = (parser->scope && TYPE_P (parser->scope)); in cp_parser_base_specifier()
14844 template_p = class_scope_p && cp_parser_optional_template_keyword (parser); in cp_parser_base_specifier()
14847 type = cp_parser_class_name (parser, in cp_parser_base_specifier()
14872 cp_parser_exception_specification_opt (cp_parser* parser) in cp_parser_exception_specification_opt() argument
14878 token = cp_lexer_peek_token (parser->lexer); in cp_parser_exception_specification_opt()
14884 cp_lexer_consume_token (parser->lexer); in cp_parser_exception_specification_opt()
14887 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_exception_specification_opt()
14890 token = cp_lexer_peek_token (parser->lexer); in cp_parser_exception_specification_opt()
14897 saved_message = parser->type_definition_forbidden_message; in cp_parser_exception_specification_opt()
14898 parser->type_definition_forbidden_message in cp_parser_exception_specification_opt()
14901 type_id_list = cp_parser_type_id_list (parser); in cp_parser_exception_specification_opt()
14903 parser->type_definition_forbidden_message = saved_message; in cp_parser_exception_specification_opt()
14909 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_exception_specification_opt()
14924 cp_parser_type_id_list (cp_parser* parser) in cp_parser_type_id_list() argument
14934 type = cp_parser_type_id (parser); in cp_parser_type_id_list()
14938 token = cp_lexer_peek_token (parser->lexer); in cp_parser_type_id_list()
14943 cp_lexer_consume_token (parser->lexer); in cp_parser_type_id_list()
14955 cp_parser_try_block (cp_parser* parser) in cp_parser_try_block() argument
14959 cp_parser_require_keyword (parser, RID_TRY, "`try'"); in cp_parser_try_block()
14962 cp_parser_compound_statement (parser, NULL, true, false); in cp_parser_try_block()
14964 cp_parser_handler_seq (parser); in cp_parser_try_block()
14976 cp_parser_function_try_block (cp_parser* parser) in cp_parser_function_try_block() argument
14983 if (!cp_parser_require_keyword (parser, RID_TRY, "`try'")) in cp_parser_function_try_block()
14989 = cp_parser_ctor_initializer_opt_and_function_body (parser); in cp_parser_function_try_block()
14993 cp_parser_handler_seq (parser); in cp_parser_function_try_block()
15006 cp_parser_handler_seq (cp_parser* parser) in cp_parser_handler_seq() argument
15013 cp_parser_handler (parser); in cp_parser_handler_seq()
15015 token = cp_lexer_peek_token (parser->lexer); in cp_parser_handler_seq()
15028 cp_parser_handler (cp_parser* parser) in cp_parser_handler() argument
15033 cp_parser_require_keyword (parser, RID_CATCH, "`catch'"); in cp_parser_handler()
15035 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_handler()
15036 declaration = cp_parser_exception_declaration (parser); in cp_parser_handler()
15038 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_handler()
15040 cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_handler()
15056 cp_parser_exception_declaration (cp_parser* parser) in cp_parser_exception_declaration() argument
15063 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_exception_declaration()
15066 cp_lexer_consume_token (parser->lexer); in cp_parser_exception_declaration()
15071 saved_message = parser->type_definition_forbidden_message; in cp_parser_exception_declaration()
15072 parser->type_definition_forbidden_message in cp_parser_exception_declaration()
15076 cp_parser_type_specifier_seq (parser, /*is_condition=*/false, in cp_parser_exception_declaration()
15079 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_exception_declaration()
15082 declarator = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_EITHER, in cp_parser_exception_declaration()
15088 parser->type_definition_forbidden_message = saved_message; in cp_parser_exception_declaration()
15104 cp_parser_throw_expression (cp_parser* parser) in cp_parser_throw_expression() argument
15109 cp_parser_require_keyword (parser, RID_THROW, "`throw'"); in cp_parser_throw_expression()
15110 token = cp_lexer_peek_token (parser->lexer); in cp_parser_throw_expression()
15121 expression = cp_parser_assignment_expression (parser, in cp_parser_throw_expression()
15139 cp_parser_asm_specification_opt (cp_parser* parser) in cp_parser_asm_specification_opt() argument
15145 token = cp_lexer_peek_token (parser->lexer); in cp_parser_asm_specification_opt()
15152 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_specification_opt()
15154 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_asm_specification_opt()
15157 asm_specification = cp_parser_string_literal (parser, false, false); in cp_parser_asm_specification_opt()
15160 cp_parser_require (parser, CPP_CLOSE_PAREN, "`('"); in cp_parser_asm_specification_opt()
15182 cp_parser_asm_operand_list (cp_parser* parser) in cp_parser_asm_operand_list() argument
15192 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_asm_operand_list()
15195 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_operand_list()
15197 name = cp_parser_identifier (parser); in cp_parser_asm_operand_list()
15202 cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'"); in cp_parser_asm_operand_list()
15207 string_literal = cp_parser_string_literal (parser, false, false); in cp_parser_asm_operand_list()
15210 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_asm_operand_list()
15212 expression = cp_parser_expression (parser, /*cast_p=*/false); in cp_parser_asm_operand_list()
15214 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_asm_operand_list()
15222 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_asm_operand_list()
15225 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_operand_list()
15241 cp_parser_asm_clobber_list (cp_parser* parser) in cp_parser_asm_clobber_list() argument
15250 string_literal = cp_parser_string_literal (parser, false, false); in cp_parser_asm_clobber_list()
15255 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_asm_clobber_list()
15258 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_clobber_list()
15275 cp_parser_attributes_opt (cp_parser* parser) in cp_parser_attributes_opt() argument
15285 token = cp_lexer_peek_token (parser->lexer); in cp_parser_attributes_opt()
15291 cp_lexer_consume_token (parser->lexer); in cp_parser_attributes_opt()
15293 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_attributes_opt()
15294 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_attributes_opt()
15297 token = cp_lexer_peek_token (parser->lexer); in cp_parser_attributes_opt()
15300 attribute_list = cp_parser_attribute_list (parser); in cp_parser_attributes_opt()
15307 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_attributes_opt()
15308 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_attributes_opt()
15335 cp_parser_attribute_list (cp_parser* parser) in cp_parser_attribute_list() argument
15338 bool save_translate_strings_p = parser->translate_strings_p; in cp_parser_attribute_list()
15340 parser->translate_strings_p = false; in cp_parser_attribute_list()
15349 token = cp_lexer_peek_token (parser->lexer); in cp_parser_attribute_list()
15356 token = cp_lexer_consume_token (parser->lexer); in cp_parser_attribute_list()
15364 token = cp_lexer_peek_token (parser->lexer); in cp_parser_attribute_list()
15369 (parser, true, /*cast_p=*/false, in cp_parser_attribute_list()
15382 token = cp_lexer_peek_token (parser->lexer); in cp_parser_attribute_list()
15390 cp_lexer_consume_token (parser->lexer); in cp_parser_attribute_list()
15392 parser->translate_strings_p = save_translate_strings_p; in cp_parser_attribute_list()
15405 cp_parser_extension_opt (cp_parser* parser, int* saved_pedantic) in cp_parser_extension_opt() argument
15410 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_EXTENSION)) in cp_parser_extension_opt()
15413 cp_lexer_consume_token (parser->lexer); in cp_parser_extension_opt()
15434 cp_parser_label_declaration (cp_parser* parser) in cp_parser_label_declaration() argument
15437 cp_parser_require_keyword (parser, RID_LABEL, "`__label__'"); in cp_parser_label_declaration()
15444 identifier = cp_parser_identifier (parser); in cp_parser_label_declaration()
15451 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_label_declaration()
15454 cp_parser_require (parser, CPP_COMMA, "`,'"); in cp_parser_label_declaration()
15458 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_label_declaration()
15499 cp_parser_lookup_name (cp_parser *parser, tree name, in cp_parser_lookup_name() argument
15508 tree object_type = parser->context->object_type; in cp_parser_lookup_name()
15510 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_lookup_name()
15520 parser->context->object_type = NULL_TREE; in cp_parser_lookup_name()
15544 if (parser->scope) in cp_parser_lookup_name()
15545 type = parser->scope; in cp_parser_lookup_name()
15567 if (parser->scope) in cp_parser_lookup_name()
15571 if (parser->scope == error_mark_node) in cp_parser_lookup_name()
15579 dependent_p = (TYPE_P (parser->scope) in cp_parser_lookup_name()
15580 && !(parser->in_declarator_p in cp_parser_lookup_name()
15581 && currently_open_class (parser->scope)) in cp_parser_lookup_name()
15582 && dependent_type_p (parser->scope)); in cp_parser_lookup_name()
15583 if ((check_dependency || !CLASS_TYPE_P (parser->scope)) in cp_parser_lookup_name()
15593 type = make_typename_type (parser->scope, name, tag_type, in cp_parser_lookup_name()
15598 && (cp_parser_next_token_ends_template_argument_p (parser) in cp_parser_lookup_name()
15599 || cp_lexer_next_token_is (parser->lexer, in cp_parser_lookup_name()
15601 decl = make_unbound_class_template (parser->scope, in cp_parser_lookup_name()
15606 parser->scope, name, in cp_parser_lookup_name()
15619 pushed_scope = push_scope (parser->scope); in cp_parser_lookup_name()
15624 decl = lookup_qualified_name (parser->scope, name, in cp_parser_lookup_name()
15630 parser->qualifying_scope = parser->scope; in cp_parser_lookup_name()
15631 parser->object_scope = NULL_TREE; in cp_parser_lookup_name()
15651 parser->object_scope = object_type; in cp_parser_lookup_name()
15652 parser->qualifying_scope = NULL_TREE; in cp_parser_lookup_name()
15661 parser->qualifying_scope = NULL_TREE; in cp_parser_lookup_name()
15662 parser->object_scope = NULL_TREE; in cp_parser_lookup_name()
15676 if (!cp_parser_simulate_error (parser)) in cp_parser_lookup_name()
15698 check_accessibility_of_qualified_id (decl, object_type, parser->scope); in cp_parser_lookup_name()
15708 cp_parser_lookup_name_simple (cp_parser* parser, tree name) in cp_parser_lookup_name_simple() argument
15710 return cp_parser_lookup_name (parser, name, in cp_parser_lookup_name_simple()
15767 cp_parser_check_declarator_template_parameters (cp_parser* parser, in cp_parser_check_declarator_template_parameters() argument
15817 return cp_parser_check_template_parameters (parser, in cp_parser_check_declarator_template_parameters()
15828 (parser, declarator->declarator)); in cp_parser_check_declarator_template_parameters()
15844 cp_parser_check_template_parameters (cp_parser* parser, in cp_parser_check_template_parameters() argument
15851 if (parser->num_template_parameter_lists < num_templates) in cp_parser_check_template_parameters()
15858 if (parser->num_template_parameter_lists == num_templates) in cp_parser_check_template_parameters()
15862 if (parser->num_template_parameter_lists == num_templates + 1) in cp_parser_check_template_parameters()
15880 cp_parser_global_scope_opt (cp_parser* parser, bool current_scope_valid_p) in cp_parser_global_scope_opt() argument
15885 token = cp_lexer_peek_token (parser->lexer); in cp_parser_global_scope_opt()
15891 cp_lexer_consume_token (parser->lexer); in cp_parser_global_scope_opt()
15893 parser->scope = global_namespace; in cp_parser_global_scope_opt()
15894 parser->qualifying_scope = global_namespace; in cp_parser_global_scope_opt()
15895 parser->object_scope = NULL_TREE; in cp_parser_global_scope_opt()
15897 return parser->scope; in cp_parser_global_scope_opt()
15901 parser->scope = NULL_TREE; in cp_parser_global_scope_opt()
15902 parser->qualifying_scope = NULL_TREE; in cp_parser_global_scope_opt()
15903 parser->object_scope = NULL_TREE; in cp_parser_global_scope_opt()
15914 cp_parser_constructor_declarator_p (cp_parser *parser, bool friend_p) in cp_parser_constructor_declarator_p() argument
15924 if (parser->in_function_body) in cp_parser_constructor_declarator_p()
15927 next_token = cp_lexer_peek_token (parser->lexer); in cp_parser_constructor_declarator_p()
15936 cp_parser_parse_tentatively (parser); in cp_parser_constructor_declarator_p()
15941 cp_parser_global_scope_opt (parser, in cp_parser_constructor_declarator_p()
15945 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_constructor_declarator_p()
15972 type_decl = cp_parser_class_name (parser, in cp_parser_constructor_declarator_p()
15980 constructor_p = !cp_parser_error_occurred (parser); in cp_parser_constructor_declarator_p()
15994 && cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_constructor_declarator_p()
15996 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN) in cp_parser_constructor_declarator_p()
15997 && cp_lexer_next_token_is_not (parser->lexer, CPP_ELLIPSIS) in cp_parser_constructor_declarator_p()
16001 && !cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer)) in cp_parser_constructor_declarator_p()
16020 cp_parser_abort_tentative_parse (parser); in cp_parser_constructor_declarator_p()
16030 = parser->num_template_parameter_lists; in cp_parser_constructor_declarator_p()
16031 parser->num_template_parameter_lists = 0; in cp_parser_constructor_declarator_p()
16034 cp_parser_type_specifier (parser, in cp_parser_constructor_declarator_p()
16041 parser->num_template_parameter_lists in cp_parser_constructor_declarator_p()
16048 constructor_p = !cp_parser_error_occurred (parser); in cp_parser_constructor_declarator_p()
16054 cp_parser_abort_tentative_parse (parser); in cp_parser_constructor_declarator_p()
16067 (cp_parser* parser, in cp_parser_function_definition_from_specifiers_and_declarator() argument
16091 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_function_definition_from_specifiers_and_declarator()
16097 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_function_definition_from_specifiers_and_declarator()
16105 fn = cp_parser_function_definition_after_declarator (parser, in cp_parser_function_definition_from_specifiers_and_declarator()
16118 cp_parser_function_definition_after_declarator (cp_parser* parser, in cp_parser_function_definition_after_declarator() argument
16127 saved_in_function_body = parser->in_function_body; in cp_parser_function_definition_after_declarator()
16128 parser->in_function_body = true; in cp_parser_function_definition_after_declarator()
16132 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_RETURN)) in cp_parser_function_definition_after_declarator()
16135 cp_lexer_consume_token (parser->lexer); in cp_parser_function_definition_after_declarator()
16138 cp_parser_identifier (parser); in cp_parser_function_definition_after_declarator()
16144 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_function_definition_after_declarator()
16149 cp_lexer_consume_token (parser->lexer); in cp_parser_function_definition_after_declarator()
16155 = parser->in_unbraced_linkage_specification_p; in cp_parser_function_definition_after_declarator()
16156 parser->in_unbraced_linkage_specification_p = false; in cp_parser_function_definition_after_declarator()
16160 = parser->num_template_parameter_lists; in cp_parser_function_definition_after_declarator()
16161 parser->num_template_parameter_lists = 0; in cp_parser_function_definition_after_declarator()
16164 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRY)) in cp_parser_function_definition_after_declarator()
16165 ctor_initializer_p = cp_parser_function_try_block (parser); in cp_parser_function_definition_after_declarator()
16170 = cp_parser_ctor_initializer_opt_and_function_body (parser); in cp_parser_function_definition_after_declarator()
16178 parser->in_unbraced_linkage_specification_p in cp_parser_function_definition_after_declarator()
16180 parser->num_template_parameter_lists in cp_parser_function_definition_after_declarator()
16182 parser->in_function_body = saved_in_function_body; in cp_parser_function_definition_after_declarator()
16192 cp_parser_template_declaration_after_export (cp_parser* parser, bool member_p) in cp_parser_template_declaration_after_export() argument
16201 if (!cp_parser_require_keyword (parser, RID_TEMPLATE, "`template'")) in cp_parser_template_declaration_after_export()
16205 if (!cp_parser_require (parser, CPP_LESS, "`<'")) in cp_parser_template_declaration_after_export()
16213 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_template_declaration_after_export()
16238 if (cp_lexer_next_token_is (parser->lexer, CPP_GREATER)) in cp_parser_template_declaration_after_export()
16240 cp_parser_error (parser, "invalid explicit specialization"); in cp_parser_template_declaration_after_export()
16246 parameter_list = cp_parser_template_parameter_list (parser); in cp_parser_template_declaration_after_export()
16255 cp_parser_skip_to_end_of_template_parameter_list (parser); in cp_parser_template_declaration_after_export()
16257 ++parser->num_template_parameter_lists; in cp_parser_template_declaration_after_export()
16260 if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_template_declaration_after_export()
16262 cp_parser_template_declaration_after_export (parser, member_p); in cp_parser_template_declaration_after_export()
16268 decl = cp_parser_single_declaration (parser, in cp_parser_template_declaration_after_export()
16288 --parser->num_template_parameter_lists; in cp_parser_template_declaration_after_export()
16308 TREE_VALUE (parser->unparsed_functions_queues) in cp_parser_template_declaration_after_export()
16310 TREE_VALUE (parser->unparsed_functions_queues)); in cp_parser_template_declaration_after_export()
16333 cp_parser_single_declaration (cp_parser* parser, in cp_parser_single_declaration() argument
16353 cp_parser_decl_specifier_seq (parser, in cp_parser_single_declaration()
16374 if (cp_parser_declares_only_class_p (parser)) in cp_parser_single_declaration()
16407 && (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON) in cp_parser_single_declaration()
16409 decl = cp_parser_init_declarator (parser, in cp_parser_single_declaration()
16421 parser->scope = NULL_TREE; in cp_parser_single_declaration()
16422 parser->qualifying_scope = NULL_TREE; in cp_parser_single_declaration()
16423 parser->object_scope = NULL_TREE; in cp_parser_single_declaration()
16427 || !cp_parser_require (parser, CPP_SEMICOLON, "`;'"))) in cp_parser_single_declaration()
16428 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_single_declaration()
16436 cp_parser_simple_cast_expression (cp_parser *parser) in cp_parser_simple_cast_expression() argument
16438 return cp_parser_cast_expression (parser, /*address_p=*/false, in cp_parser_simple_cast_expression()
16446 cp_parser_functional_cast (cp_parser* parser, tree type) in cp_parser_functional_cast() argument
16452 = cp_parser_parenthesized_expression_list (parser, false, in cp_parser_functional_cast()
16464 (parser, "a call to a constructor"))) in cp_parser_functional_cast()
16476 cp_parser_save_member_function_body (cp_parser* parser, in cp_parser_save_member_function_body() argument
16492 (cp_lexer_peek_token (parser->lexer))) in cp_parser_save_member_function_body()
16493 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_save_member_function_body()
16498 cp_parser_save_default_args (parser, fn); in cp_parser_save_member_function_body()
16502 first = parser->lexer->next_token; in cp_parser_save_member_function_body()
16503 cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0); in cp_parser_save_member_function_body()
16505 while (cp_lexer_next_token_is_keyword (parser->lexer, RID_CATCH)) in cp_parser_save_member_function_body()
16506 cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0); in cp_parser_save_member_function_body()
16507 last = parser->lexer->next_token; in cp_parser_save_member_function_body()
16522 TREE_VALUE (parser->unparsed_functions_queues) in cp_parser_save_member_function_body()
16524 TREE_VALUE (parser->unparsed_functions_queues)); in cp_parser_save_member_function_body()
16534 cp_parser_enclosed_template_argument_list (cp_parser* parser) in cp_parser_enclosed_template_argument_list() argument
16549 = parser->greater_than_is_operator_p; in cp_parser_enclosed_template_argument_list()
16550 parser->greater_than_is_operator_p = false; in cp_parser_enclosed_template_argument_list()
16553 saved_scope = parser->scope; in cp_parser_enclosed_template_argument_list()
16554 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_enclosed_template_argument_list()
16555 saved_object_scope = parser->object_scope; in cp_parser_enclosed_template_argument_list()
16561 if (cp_lexer_next_token_is (parser->lexer, CPP_GREATER)) in cp_parser_enclosed_template_argument_list()
16564 arguments = cp_parser_template_argument_list (parser); in cp_parser_enclosed_template_argument_list()
16567 if (cp_lexer_next_token_is (parser->lexer, CPP_RSHIFT)) in cp_parser_enclosed_template_argument_list()
16577 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_enclosed_template_argument_list()
16592 cp_lexer_consume_token (parser->lexer); in cp_parser_enclosed_template_argument_list()
16598 cp_parser_skip_to_end_of_template_parameter_list (parser); in cp_parser_enclosed_template_argument_list()
16600 parser->greater_than_is_operator_p in cp_parser_enclosed_template_argument_list()
16603 parser->scope = saved_scope; in cp_parser_enclosed_template_argument_list()
16604 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_enclosed_template_argument_list()
16605 parser->object_scope = saved_object_scope; in cp_parser_enclosed_template_argument_list()
16616 cp_parser_late_parsing_for_member (cp_parser* parser, tree member_function) in cp_parser_late_parsing_for_member() argument
16626 gcc_assert (parser->num_classes_being_defined == 0); in cp_parser_late_parsing_for_member()
16631 parser->unparsed_functions_queues in cp_parser_late_parsing_for_member()
16632 = tree_cons (NULL_TREE, NULL_TREE, parser->unparsed_functions_queues); in cp_parser_late_parsing_for_member()
16657 cp_parser_push_lexer_for_tokens (parser, tokens); in cp_parser_late_parsing_for_member()
16669 cp_parser_function_definition_after_declarator (parser, in cp_parser_late_parsing_for_member()
16678 cp_parser_pop_lexer (parser); in cp_parser_late_parsing_for_member()
16685 parser->unparsed_functions_queues in cp_parser_late_parsing_for_member()
16686 = TREE_CHAIN (parser->unparsed_functions_queues); in cp_parser_late_parsing_for_member()
16693 cp_parser_save_default_args (cp_parser* parser, tree decl) in cp_parser_save_default_args() argument
16702 TREE_PURPOSE (parser->unparsed_functions_queues) in cp_parser_save_default_args()
16704 TREE_PURPOSE (parser->unparsed_functions_queues)); in cp_parser_save_default_args()
16715 cp_parser_late_parsing_default_args (cp_parser *parser, tree fn) in cp_parser_late_parsing_default_args() argument
16724 parser->unparsed_functions_queues in cp_parser_late_parsing_default_args()
16725 = tree_cons (NULL_TREE, NULL_TREE, parser->unparsed_functions_queues); in cp_parser_late_parsing_default_args()
16729 saved_local_variables_forbidden_p = parser->local_variables_forbidden_p; in cp_parser_late_parsing_default_args()
16730 parser->local_variables_forbidden_p = true; in cp_parser_late_parsing_default_args()
16754 cp_parser_push_lexer_for_tokens (parser, tokens); in cp_parser_late_parsing_default_args()
16757 parsed_arg = cp_parser_assignment_expression (parser, /*cast_p=*/false); in cp_parser_late_parsing_default_args()
16772 if (!cp_lexer_next_token_is (parser->lexer, CPP_EOF)) in cp_parser_late_parsing_default_args()
16773 cp_parser_error (parser, "expected %<,%>"); in cp_parser_late_parsing_default_args()
16776 cp_parser_pop_lexer (parser); in cp_parser_late_parsing_default_args()
16783 parser->local_variables_forbidden_p = saved_local_variables_forbidden_p; in cp_parser_late_parsing_default_args()
16786 parser->unparsed_functions_queues in cp_parser_late_parsing_default_args()
16787 = TREE_CHAIN (parser->unparsed_functions_queues); in cp_parser_late_parsing_default_args()
16796 cp_parser_sizeof_operand (cp_parser* parser, enum rid keyword) in cp_parser_sizeof_operand() argument
16810 saved_message = parser->type_definition_forbidden_message; in cp_parser_sizeof_operand()
16812 parser->type_definition_forbidden_message in cp_parser_sizeof_operand()
16816 sprintf ((char *) parser->type_definition_forbidden_message, in cp_parser_sizeof_operand()
16822 = parser->integral_constant_expression_p; in cp_parser_sizeof_operand()
16824 = parser->non_integral_constant_expression_p; in cp_parser_sizeof_operand()
16825 parser->integral_constant_expression_p = false; in cp_parser_sizeof_operand()
16831 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_sizeof_operand()
16838 cp_parser_parse_tentatively (parser); in cp_parser_sizeof_operand()
16840 cp_lexer_consume_token (parser->lexer); in cp_parser_sizeof_operand()
16842 saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_sizeof_operand()
16843 parser->in_type_id_in_expr_p = true; in cp_parser_sizeof_operand()
16844 type = cp_parser_type_id (parser); in cp_parser_sizeof_operand()
16845 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_sizeof_operand()
16847 cp_parser_require (parser, CPP_CLOSE_PAREN, "%<)%>"); in cp_parser_sizeof_operand()
16849 if (cp_parser_parse_definitely (parser)) in cp_parser_sizeof_operand()
16869 expr = cp_parser_unary_expression (parser, /*address_p=*/false, in cp_parser_sizeof_operand()
16875 free ((char *) parser->type_definition_forbidden_message); in cp_parser_sizeof_operand()
16877 parser->type_definition_forbidden_message = saved_message; in cp_parser_sizeof_operand()
16878 parser->integral_constant_expression_p in cp_parser_sizeof_operand()
16880 parser->non_integral_constant_expression_p in cp_parser_sizeof_operand()
16889 cp_parser_declares_only_class_p (cp_parser *parser) in cp_parser_declares_only_class_p() argument
16893 return (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON) in cp_parser_declares_only_class_p()
16894 || cp_lexer_next_token_is (parser->lexer, CPP_COMMA)); in cp_parser_declares_only_class_p()
16901 cp_parser_set_storage_class (cp_parser *parser, in cp_parser_set_storage_class() argument
16907 if (parser->in_unbraced_linkage_specification_p) in cp_parser_set_storage_class()
17014 cp_parser_require (cp_parser* parser, in cp_parser_require() argument
17018 if (cp_lexer_next_token_is (parser->lexer, type)) in cp_parser_require()
17019 return cp_lexer_consume_token (parser->lexer); in cp_parser_require()
17023 if (!cp_parser_simulate_error (parser)) in cp_parser_require()
17026 cp_parser_error (parser, message); in cp_parser_require()
17038 cp_parser_skip_to_end_of_template_parameter_list (cp_parser* parser) in cp_parser_skip_to_end_of_template_parameter_list() argument
17046 if (cp_parser_require (parser, CPP_GREATER, "%<>%>")) in cp_parser_skip_to_end_of_template_parameter_list()
17053 switch (cp_lexer_peek_token (parser->lexer)->type) in cp_parser_skip_to_end_of_template_parameter_list()
17064 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_template_parameter_list()
17093 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_template_parameter_list()
17104 cp_parser_require_keyword (cp_parser* parser, in cp_parser_require_keyword() argument
17108 cp_token *token = cp_parser_require (parser, CPP_KEYWORD, token_desc); in cp_parser_require_keyword()
17118 cp_parser_error (parser, error_msg->s); in cp_parser_require_keyword()
17146 cp_parser_next_token_starts_class_definition_p (cp_parser *parser) in cp_parser_next_token_starts_class_definition_p() argument
17150 token = cp_lexer_peek_token (parser->lexer); in cp_parser_next_token_starts_class_definition_p()
17158 cp_parser_next_token_ends_template_argument_p (cp_parser *parser) in cp_parser_next_token_ends_template_argument_p() argument
17162 token = cp_lexer_peek_token (parser->lexer); in cp_parser_next_token_ends_template_argument_p()
17170 cp_parser_nth_token_starts_template_argument_list_p (cp_parser * parser, in cp_parser_nth_token_starts_template_argument_list_p() argument
17175 token = cp_lexer_peek_nth_token (parser->lexer, n); in cp_parser_nth_token_starts_template_argument_list_p()
17184 token2 = cp_lexer_peek_nth_token (parser->lexer, n+1); in cp_parser_nth_token_starts_template_argument_list_p()
17246 cp_parser_optional_template_keyword (cp_parser *parser) in cp_parser_optional_template_keyword() argument
17248 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_optional_template_keyword()
17260 cp_lexer_purge_token (parser->lexer); in cp_parser_optional_template_keyword()
17266 cp_lexer_consume_token (parser->lexer); in cp_parser_optional_template_keyword()
17278 cp_parser_pre_parsed_nested_name_specifier (cp_parser *parser) in cp_parser_pre_parsed_nested_name_specifier() argument
17286 check_value = cp_lexer_consume_token (parser->lexer)->u.tree_check_value; in cp_parser_pre_parsed_nested_name_specifier()
17301 parser->scope = check_value->value; in cp_parser_pre_parsed_nested_name_specifier()
17302 parser->qualifying_scope = check_value->qualifying_scope; in cp_parser_pre_parsed_nested_name_specifier()
17303 parser->object_scope = NULL_TREE; in cp_parser_pre_parsed_nested_name_specifier()
17309 cp_parser_cache_group (cp_parser *parser, in cp_parser_cache_group() argument
17319 && cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_cache_group()
17322 if (cp_lexer_next_token_is (parser->lexer, CPP_EOF) in cp_parser_cache_group()
17324 && cp_lexer_next_token_is (parser->lexer, CPP_PRAGMA_EOL))) in cp_parser_cache_group()
17327 token = cp_lexer_consume_token (parser->lexer); in cp_parser_cache_group()
17331 cp_parser_cache_group (parser, CPP_CLOSE_BRACE, depth + 1); in cp_parser_cache_group()
17336 cp_parser_cache_group (parser, CPP_CLOSE_PAREN, depth + 1); in cp_parser_cache_group()
17338 cp_parser_cache_group (parser, CPP_PRAGMA_EOL, depth + 1); in cp_parser_cache_group()
17349 cp_parser_parse_tentatively (cp_parser* parser) in cp_parser_parse_tentatively() argument
17352 parser->context = cp_parser_context_new (parser->context); in cp_parser_parse_tentatively()
17354 cp_lexer_save_tokens (parser->lexer); in cp_parser_parse_tentatively()
17364 cp_parser_commit_to_tentative_parse (cp_parser* parser) in cp_parser_commit_to_tentative_parse() argument
17370 lexer = parser->lexer; in cp_parser_commit_to_tentative_parse()
17371 for (context = parser->context; context->next; context = context->next) in cp_parser_commit_to_tentative_parse()
17386 cp_parser_abort_tentative_parse (cp_parser* parser) in cp_parser_abort_tentative_parse() argument
17388 cp_parser_simulate_error (parser); in cp_parser_abort_tentative_parse()
17391 cp_parser_parse_definitely (parser); in cp_parser_abort_tentative_parse()
17399 cp_parser_parse_definitely (cp_parser* parser) in cp_parser_parse_definitely() argument
17406 error_occurred = cp_parser_error_occurred (parser); in cp_parser_parse_definitely()
17408 context = parser->context; in cp_parser_parse_definitely()
17409 parser->context = context->next; in cp_parser_parse_definitely()
17416 cp_lexer_commit_tokens (parser->lexer); in cp_parser_parse_definitely()
17424 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_parse_definitely()
17438 cp_parser_uncommitted_to_tentative_parse_p (cp_parser* parser) in cp_parser_uncommitted_to_tentative_parse_p() argument
17440 return (cp_parser_parsing_tentatively (parser) in cp_parser_uncommitted_to_tentative_parse_p()
17441 && parser->context->status != CP_PARSER_STATUS_KIND_COMMITTED); in cp_parser_uncommitted_to_tentative_parse_p()
17448 cp_parser_error_occurred (cp_parser* parser) in cp_parser_error_occurred() argument
17450 return (cp_parser_parsing_tentatively (parser) in cp_parser_error_occurred()
17451 && parser->context->status == CP_PARSER_STATUS_KIND_ERROR); in cp_parser_error_occurred()
17457 cp_parser_allow_gnu_extensions_p (cp_parser* parser) in cp_parser_allow_gnu_extensions_p() argument
17459 return parser->allow_gnu_extensions_p; in cp_parser_allow_gnu_extensions_p()
17478 cp_parser_objc_expression (cp_parser* parser) in cp_parser_objc_expression() argument
17481 cp_token *kwd = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_expression()
17486 return cp_parser_objc_message_expression (parser); in cp_parser_objc_expression()
17489 kwd = cp_lexer_consume_token (parser->lexer); in cp_parser_objc_expression()
17496 return cp_parser_objc_encode_expression (parser); in cp_parser_objc_expression()
17499 return cp_parser_objc_protocol_expression (parser); in cp_parser_objc_expression()
17502 return cp_parser_objc_selector_expression (parser); in cp_parser_objc_expression()
17509 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_expression()
17523 cp_parser_objc_message_expression (cp_parser* parser) in cp_parser_objc_message_expression() argument
17527 cp_lexer_consume_token (parser->lexer); /* Eat '['. */ in cp_parser_objc_message_expression()
17528 receiver = cp_parser_objc_message_receiver (parser); in cp_parser_objc_message_expression()
17529 messageargs = cp_parser_objc_message_args (parser); in cp_parser_objc_message_expression()
17530 cp_parser_require (parser, CPP_CLOSE_SQUARE, "`]'"); in cp_parser_objc_message_expression()
17544 cp_parser_objc_reference_expression (cp_parser* parser, tree type_decl) in cp_parser_objc_reference_expression() argument
17548 cp_lexer_consume_token (parser->lexer); /* Eact '.' */ in cp_parser_objc_reference_expression()
17549 component = cp_parser_objc_message_args (parser); in cp_parser_objc_reference_expression()
17563 cp_parser_objc_message_receiver (cp_parser* parser) in cp_parser_objc_message_receiver() argument
17569 cp_parser_parse_tentatively (parser); in cp_parser_objc_message_receiver()
17570 rcv = cp_parser_expression (parser, false); in cp_parser_objc_message_receiver()
17572 if (cp_parser_parse_definitely (parser)) in cp_parser_objc_message_receiver()
17575 rcv = cp_parser_simple_type_specifier (parser, in cp_parser_objc_message_receiver()
17602 cp_parser_objc_message_args (cp_parser* parser) in cp_parser_objc_message_args() argument
17606 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_message_args()
17613 selector = cp_parser_objc_selector (parser); in cp_parser_objc_message_args()
17617 && cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_objc_message_args()
17621 cp_parser_require (parser, CPP_COLON, "`:'"); in cp_parser_objc_message_args()
17622 arg = cp_parser_assignment_expression (parser, false); in cp_parser_objc_message_args()
17628 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_message_args()
17636 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_message_args()
17637 arg = cp_parser_assignment_expression (parser, false); in cp_parser_objc_message_args()
17643 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_message_args()
17657 cp_parser_objc_encode_expression (cp_parser* parser) in cp_parser_objc_encode_expression() argument
17661 cp_lexer_consume_token (parser->lexer); /* Eat '@encode'. */ in cp_parser_objc_encode_expression()
17662 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_objc_encode_expression()
17663 type = complete_type (cp_parser_type_id (parser)); in cp_parser_objc_encode_expression()
17664 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_encode_expression()
17678 cp_parser_objc_defs_expression (cp_parser *parser) in cp_parser_objc_defs_expression() argument
17682 cp_lexer_consume_token (parser->lexer); /* Eat '@defs'. */ in cp_parser_objc_defs_expression()
17683 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_objc_defs_expression()
17684 name = cp_parser_identifier (parser); in cp_parser_objc_defs_expression()
17685 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_defs_expression()
17698 cp_parser_objc_protocol_expression (cp_parser* parser) in cp_parser_objc_protocol_expression() argument
17702 cp_lexer_consume_token (parser->lexer); /* Eat '@protocol'. */ in cp_parser_objc_protocol_expression()
17703 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_objc_protocol_expression()
17704 proto = cp_parser_identifier (parser); in cp_parser_objc_protocol_expression()
17705 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_protocol_expression()
17726 cp_parser_objc_selector_expression (cp_parser* parser) in cp_parser_objc_selector_expression() argument
17732 cp_lexer_consume_token (parser->lexer); /* Eat '@selector'. */ in cp_parser_objc_selector_expression()
17733 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_objc_selector_expression()
17734 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_selector_expression()
17743 selector = cp_parser_objc_selector (parser); in cp_parser_objc_selector_expression()
17745 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON) in cp_parser_objc_selector_expression()
17746 && cp_lexer_next_token_is_not (parser->lexer, CPP_SCOPE)) in cp_parser_objc_selector_expression()
17756 cp_parser_error (parser, "expected %<:%>"); in cp_parser_objc_selector_expression()
17760 token = cp_lexer_consume_token (parser->lexer); in cp_parser_objc_selector_expression()
17776 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_selector_expression()
17780 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_selector_expression()
17794 cp_parser_objc_identifier_list (cp_parser* parser) in cp_parser_objc_identifier_list() argument
17796 tree list = build_tree_list (NULL_TREE, cp_parser_identifier (parser)); in cp_parser_objc_identifier_list()
17797 cp_token *sep = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_identifier_list()
17801 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in cp_parser_objc_identifier_list()
17804 cp_parser_identifier (parser))); in cp_parser_objc_identifier_list()
17805 sep = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_identifier_list()
17820 cp_parser_objc_alias_declaration (cp_parser* parser) in cp_parser_objc_alias_declaration() argument
17824 cp_lexer_consume_token (parser->lexer); /* Eat '@compatibility_alias'. */ in cp_parser_objc_alias_declaration()
17825 alias = cp_parser_identifier (parser); in cp_parser_objc_alias_declaration()
17826 orig = cp_parser_identifier (parser); in cp_parser_objc_alias_declaration()
17828 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_alias_declaration()
17840 cp_parser_objc_class_declaration (cp_parser* parser) in cp_parser_objc_class_declaration() argument
17842 cp_lexer_consume_token (parser->lexer); /* Eat '@class'. */ in cp_parser_objc_class_declaration()
17843 objc_declare_class (cp_parser_objc_identifier_list (parser)); in cp_parser_objc_class_declaration()
17844 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_class_declaration()
17858 cp_parser_objc_protocol_refs_opt (cp_parser* parser) in cp_parser_objc_protocol_refs_opt() argument
17862 if(cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_objc_protocol_refs_opt()
17864 cp_lexer_consume_token (parser->lexer); /* Eat '<'. */ in cp_parser_objc_protocol_refs_opt()
17865 protorefs = cp_parser_objc_identifier_list (parser); in cp_parser_objc_protocol_refs_opt()
17866 cp_parser_require (parser, CPP_GREATER, "`>'"); in cp_parser_objc_protocol_refs_opt()
17875 cp_parser_objc_visibility_spec (cp_parser* parser) in cp_parser_objc_visibility_spec() argument
17877 cp_token *vis = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_visibility_spec()
17895 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_visibility_spec()
17901 cp_parser_objc_method_type (cp_parser* parser) in cp_parser_objc_method_type() argument
17904 (cp_lexer_consume_token (parser->lexer)->type == CPP_PLUS in cp_parser_objc_method_type()
17912 cp_parser_objc_protocol_qualifiers (cp_parser* parser) in cp_parser_objc_protocol_qualifiers() argument
17915 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_protocol_qualifiers()
17928 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_protocol_qualifiers()
17929 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_protocol_qualifiers()
17939 cp_parser_objc_typename (cp_parser* parser) in cp_parser_objc_typename() argument
17943 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_objc_typename()
17947 cp_lexer_consume_token (parser->lexer); /* Eat '('. */ in cp_parser_objc_typename()
17948 proto_quals = cp_parser_objc_protocol_qualifiers (parser); in cp_parser_objc_typename()
17952 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_objc_typename()
17953 cp_type = cp_parser_type_id (parser); in cp_parser_objc_typename()
17955 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_typename()
17977 cp_parser_objc_selector (cp_parser* parser) in cp_parser_objc_selector() argument
17979 cp_token *token = cp_lexer_consume_token (parser->lexer); in cp_parser_objc_selector()
18007 cp_parser_objc_maybe_attributes (cp_parser* parser, tree* attributes) in cp_parser_objc_maybe_attributes() argument
18009 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_maybe_attributes()
18016 *attributes = cp_parser_attributes_opt (parser); in cp_parser_objc_maybe_attributes()
18022 cp_parser_objc_method_keyword_params (cp_parser* parser, tree* attributes) in cp_parser_objc_method_keyword_params() argument
18027 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_keyword_params()
18036 selector = cp_parser_objc_selector (parser); in cp_parser_objc_method_keyword_params()
18040 && cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_objc_method_keyword_params()
18043 cp_parser_objc_maybe_attributes (parser, attributes); in cp_parser_objc_method_keyword_params()
18044 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_objc_method_keyword_params()
18050 cp_parser_require (parser, CPP_COLON, "`:'"); in cp_parser_objc_method_keyword_params()
18051 typename = cp_parser_objc_typename (parser); in cp_parser_objc_method_keyword_params()
18053 cp_parser_objc_maybe_attributes (parser, &attr); in cp_parser_objc_method_keyword_params()
18054 identifier = cp_parser_identifier (parser); in cp_parser_objc_method_keyword_params()
18056 cp_parser_objc_maybe_attributes (parser, attributes); in cp_parser_objc_method_keyword_params()
18065 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_keyword_params()
18071 cp_parser_error (parser, "objective-c++ method declaration is expected"); in cp_parser_objc_method_keyword_params()
18083 cp_parser_objc_method_tail_params_opt (cp_parser* parser, bool *ellipsisp, tree* attributes) in cp_parser_objc_method_tail_params_opt() argument
18086 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_tail_params_opt()
18094 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in cp_parser_objc_method_tail_params_opt()
18095 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_tail_params_opt()
18099 cp_lexer_consume_token (parser->lexer); /* Eat '...'. */ in cp_parser_objc_method_tail_params_opt()
18102 cp_parser_objc_maybe_attributes (parser, attributes); in cp_parser_objc_method_tail_params_opt()
18106 parmdecl = cp_parser_parameter_declaration (parser, false, NULL); in cp_parser_objc_method_tail_params_opt()
18113 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_tail_params_opt()
18122 cp_parser_objc_interstitial_code (cp_parser* parser) in cp_parser_objc_interstitial_code() argument
18124 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_interstitial_code()
18129 && cp_parser_is_string_literal (cp_lexer_peek_nth_token (parser->lexer, 2))) in cp_parser_objc_interstitial_code()
18130 cp_parser_linkage_specification (parser); in cp_parser_objc_interstitial_code()
18133 cp_parser_pragma (parser, pragma_external); in cp_parser_objc_interstitial_code()
18136 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_interstitial_code()
18139 cp_parser_block_declaration (parser, /*statement_p=*/false); in cp_parser_objc_interstitial_code()
18146 cp_parser_objc_method_signature (cp_parser* parser, tree* attributes) in cp_parser_objc_method_signature() argument
18151 cp_parser_objc_method_type (parser); in cp_parser_objc_method_signature()
18152 rettype = cp_parser_objc_typename (parser); in cp_parser_objc_method_signature()
18155 kwdparms = cp_parser_objc_method_keyword_params (parser, attributes); in cp_parser_objc_method_signature()
18156 optparms = cp_parser_objc_method_tail_params_opt (parser, &ellipsis, attributes); in cp_parser_objc_method_signature()
18165 cp_parser_objc_method_prototype_list (cp_parser* parser) in cp_parser_objc_method_prototype_list() argument
18167 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_prototype_list()
18176 sig = cp_parser_objc_method_signature (parser, &attributes); in cp_parser_objc_method_prototype_list()
18179 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_method_prototype_list()
18183 objc_cp_parser_at_property (parser); in cp_parser_objc_method_prototype_list()
18187 cp_parser_objc_interstitial_code (parser); in cp_parser_objc_method_prototype_list()
18189 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_prototype_list()
18193 cp_parser_require_keyword (parser, RID_AT_END, "`@end'"); in cp_parser_objc_method_prototype_list()
18200 cp_parser_objc_method_definition_list (cp_parser* parser) in cp_parser_objc_method_definition_list() argument
18202 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_definition_list()
18216 sig = cp_parser_objc_method_signature (parser, &attribute); in cp_parser_objc_method_definition_list()
18221 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_method_definition_list()
18222 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_method_definition_list()
18226 ptk = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_definition_list()
18232 meth = cp_parser_function_definition_after_declarator (parser, in cp_parser_objc_method_definition_list()
18239 cp_parser_require (parser, CPP_OPEN_BRACE, "`{'"); in cp_parser_objc_method_definition_list()
18245 objc_cp_parser_at_property (parser); in cp_parser_objc_method_definition_list()
18249 cp_parser_objc_interstitial_code (parser); in cp_parser_objc_method_definition_list()
18251 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_definition_list()
18255 cp_parser_require_keyword (parser, RID_AT_END, "`@end'"); in cp_parser_objc_method_definition_list()
18262 cp_parser_objc_class_ivars (cp_parser* parser) in cp_parser_objc_class_ivars() argument
18264 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
18269 cp_lexer_consume_token (parser->lexer); /* Eat '{'. */ in cp_parser_objc_class_ivars()
18270 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
18278 cp_parser_objc_visibility_spec (parser); in cp_parser_objc_class_ivars()
18280 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_objc_class_ivars()
18283 cp_parser_decl_specifier_seq (parser, in cp_parser_objc_class_ivars()
18292 while (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_class_ivars()
18299 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
18304 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_objc_class_ivars()
18309 cp_parser_identifier (parser), in cp_parser_objc_class_ivars()
18313 cp_lexer_consume_token (parser->lexer); /* Eat ':'. */ in cp_parser_objc_class_ivars()
18316 = cp_parser_constant_expression (parser, in cp_parser_objc_class_ivars()
18324 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_objc_class_ivars()
18331 attributes = cp_parser_attributes_opt (parser); in cp_parser_objc_class_ivars()
18358 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
18362 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in cp_parser_objc_class_ivars()
18368 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_class_ivars()
18369 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
18372 cp_lexer_consume_token (parser->lexer); /* Eat '}'. */ in cp_parser_objc_class_ivars()
18374 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_class_ivars()
18375 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_class_ivars()
18382 cp_parser_objc_protocol_declaration (cp_parser* parser, tree attributes) in cp_parser_objc_protocol_declaration() argument
18387 cp_lexer_consume_token (parser->lexer); /* Eat '@protocol'. */ in cp_parser_objc_protocol_declaration()
18388 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME)) in cp_parser_objc_protocol_declaration()
18395 tok = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_objc_protocol_declaration()
18401 objc_declare_protocols (cp_parser_objc_identifier_list (parser), attributes); in cp_parser_objc_protocol_declaration()
18403 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_protocol_declaration()
18409 proto = cp_parser_identifier (parser); in cp_parser_objc_protocol_declaration()
18410 protorefs = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_objc_protocol_declaration()
18413 cp_parser_objc_method_prototype_list (parser); in cp_parser_objc_protocol_declaration()
18421 cp_parser_objc_superclass_or_category (cp_parser *parser, tree *super, in cp_parser_objc_superclass_or_category() argument
18424 cp_token *next = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_superclass_or_category()
18430 cp_lexer_consume_token (parser->lexer); /* Eat ':'. */ in cp_parser_objc_superclass_or_category()
18431 *super = cp_parser_identifier (parser); in cp_parser_objc_superclass_or_category()
18435 cp_lexer_consume_token (parser->lexer); /* Eat '('. */ in cp_parser_objc_superclass_or_category()
18437 next = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_superclass_or_category()
18438 *categ = (next->type == CPP_CLOSE_PAREN) ? NULL_TREE : cp_parser_identifier (parser); in cp_parser_objc_superclass_or_category()
18441 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_superclass_or_category()
18450 cp_parser_objc_class_interface (cp_parser* parser, tree attributes) in cp_parser_objc_class_interface() argument
18457 cp_lexer_consume_token (parser->lexer); /* Eat '@interface'. */ in cp_parser_objc_class_interface()
18458 name = cp_parser_identifier (parser); in cp_parser_objc_class_interface()
18460 cp_parser_objc_superclass_or_category (parser, &super, &categ, &is_categ); in cp_parser_objc_class_interface()
18461 protos = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_objc_class_interface()
18478 cp_parser_objc_class_ivars (parser); in cp_parser_objc_class_interface()
18482 cp_parser_objc_method_prototype_list (parser); in cp_parser_objc_class_interface()
18488 cp_parser_objc_class_implementation (cp_parser* parser) in cp_parser_objc_class_implementation() argument
18493 cp_lexer_consume_token (parser->lexer); /* Eat '@implementation'. */ in cp_parser_objc_class_implementation()
18494 name = cp_parser_identifier (parser); in cp_parser_objc_class_implementation()
18496 cp_parser_objc_superclass_or_category (parser, &super, &categ, &is_categ); in cp_parser_objc_class_implementation()
18514 cp_parser_objc_class_ivars (parser); in cp_parser_objc_class_implementation()
18518 cp_parser_objc_method_definition_list (parser); in cp_parser_objc_class_implementation()
18524 cp_parser_objc_end_implementation (cp_parser* parser) in cp_parser_objc_end_implementation() argument
18526 cp_lexer_consume_token (parser->lexer); /* Eat '@end'. */ in cp_parser_objc_end_implementation()
18533 cp_parser_objc_declaration (cp_parser* parser) in cp_parser_objc_declaration() argument
18536 cp_token *kwd = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_declaration()
18541 cp_parser_objc_alias_declaration (parser); in cp_parser_objc_declaration()
18544 cp_parser_objc_class_declaration (parser); in cp_parser_objc_declaration()
18548 cp_parser_objc_protocol_declaration (parser, NULL_TREE); in cp_parser_objc_declaration()
18554 cp_parser_objc_maybe_attributes (parser, &attributes); in cp_parser_objc_declaration()
18555 if (cp_lexer_peek_token (parser->lexer)->keyword == RID_AT_INTERFACE) in cp_parser_objc_declaration()
18556 cp_parser_objc_class_interface (parser, attributes); in cp_parser_objc_declaration()
18557 else if (cp_lexer_peek_token (parser->lexer)->keyword == RID_AT_PROTOCOL) in cp_parser_objc_declaration()
18558 cp_parser_objc_protocol_declaration (parser, attributes); in cp_parser_objc_declaration()
18564 cp_parser_objc_class_interface (parser, NULL_TREE); in cp_parser_objc_declaration()
18567 cp_parser_objc_class_implementation (parser); in cp_parser_objc_declaration()
18570 cp_parser_objc_end_implementation (parser); in cp_parser_objc_declaration()
18574 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_declaration()
18596 cp_parser_objc_try_catch_finally_statement (cp_parser *parser) { in cp_parser_objc_try_catch_finally_statement() argument
18600 cp_parser_require_keyword (parser, RID_AT_TRY, "`@try'"); in cp_parser_objc_try_catch_finally_statement()
18601 location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_try_catch_finally_statement()
18606 cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_objc_try_catch_finally_statement()
18609 while (cp_lexer_next_token_is_keyword (parser->lexer, RID_AT_CATCH)) in cp_parser_objc_try_catch_finally_statement()
18614 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_try_catch_finally_statement()
18615 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_objc_try_catch_finally_statement()
18616 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_try_catch_finally_statement()
18619 cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_objc_try_catch_finally_statement()
18623 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AT_FINALLY)) in cp_parser_objc_try_catch_finally_statement()
18625 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_try_catch_finally_statement()
18626 location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_try_catch_finally_statement()
18631 cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_objc_try_catch_finally_statement()
18646 cp_parser_objc_synchronized_statement (cp_parser *parser) { in cp_parser_objc_synchronized_statement() argument
18650 cp_parser_require_keyword (parser, RID_AT_SYNCHRONIZED, "`@synchronized'"); in cp_parser_objc_synchronized_statement()
18652 location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_synchronized_statement()
18653 cp_parser_require (parser, CPP_OPEN_PAREN, "`('"); in cp_parser_objc_synchronized_statement()
18654 lock = cp_parser_expression (parser, false); in cp_parser_objc_synchronized_statement()
18655 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_objc_synchronized_statement()
18661 cp_parser_compound_statement (parser, NULL, false, flag_objc_sjlj_exceptions); in cp_parser_objc_synchronized_statement()
18674 cp_parser_objc_throw_statement (cp_parser *parser) { in cp_parser_objc_throw_statement() argument
18677 cp_parser_require_keyword (parser, RID_AT_THROW, "`@throw'"); in cp_parser_objc_throw_statement()
18679 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_throw_statement()
18680 expr = cp_parser_assignment_expression (parser, false); in cp_parser_objc_throw_statement()
18682 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_throw_statement()
18690 cp_parser_objc_statement (cp_parser * parser) { in cp_parser_objc_statement() argument
18692 cp_token *kwd = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_statement()
18697 return cp_parser_objc_try_catch_finally_statement (parser); in cp_parser_objc_statement()
18699 return cp_parser_objc_synchronized_statement (parser); in cp_parser_objc_statement()
18701 return cp_parser_objc_throw_statement (parser); in cp_parser_objc_statement()
18704 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_statement()
18757 objc_foreach_stmt (cp_parser* parser, tree statement) in objc_foreach_stmt() argument
18774 receiver = cp_parser_condition (parser); in objc_foreach_stmt()
18775 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in objc_foreach_stmt()
18877 in_statement = parser->in_statement; in objc_foreach_stmt()
18878 parser->in_statement = IN_ITERATION_STMT; in objc_foreach_stmt()
18879 cp_parser_already_scoped_statement (parser); in objc_foreach_stmt()
18880 parser->in_statement = in_statement; in objc_foreach_stmt()
19679 cp_parser_block_id (cp_parser* parser) in cp_parser_block_id() argument
19685 cp_parser_type_specifier_seq (parser, /*is_condition=*/false, in cp_parser_block_id()
19692 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_BLOCK, NULL, in cp_parser_block_id()
19711 cp_parser_block_literal_expr (cp_parser* parser) in cp_parser_block_literal_expr() argument
19736 cp_lexer_consume_token (parser->lexer); /* eat '^' */ in cp_parser_block_literal_expr()
19739 if (cp_lexer_peek_token (parser->lexer)->keyword == RID_ATTRIBUTE) in cp_parser_block_literal_expr()
19740 attributes = cp_parser_attributes_opt (parser); in cp_parser_block_literal_expr()
19743 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_block_literal_expr()
19746 cp_lexer_consume_token (parser->lexer); in cp_parser_block_literal_expr()
19751 args = cp_parser_parameter_declaration_clause (parser); in cp_parser_block_literal_expr()
19752 cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); in cp_parser_block_literal_expr()
19759 raises = cp_parser_exception_specification_opt (parser); in cp_parser_block_literal_expr()
19762 else if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_block_literal_expr()
19775 decl = cp_parser_block_id (parser); in cp_parser_block_literal_expr()
19844 if (cp_lexer_peek_token (parser->lexer)->keyword == RID_ATTRIBUTE) in cp_parser_block_literal_expr()
19845 attributes = cp_parser_attributes_opt (parser); in cp_parser_block_literal_expr()
19853 unsigned save = parser->in_statement; in cp_parser_block_literal_expr()
19856 parser->in_statement = 0; in cp_parser_block_literal_expr()
19869 cp_parser_compound_statement (parser, NULL, false, false); in cp_parser_block_literal_expr()
19870 parser->in_statement = save; in cp_parser_block_literal_expr()
20465 cp_parser_omp_clause_name (cp_parser *parser) in cp_parser_omp_clause_name() argument
20469 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_IF)) in cp_parser_omp_clause_name()
20471 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_DEFAULT)) in cp_parser_omp_clause_name()
20473 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_PRIVATE)) in cp_parser_omp_clause_name()
20475 else if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_name()
20477 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_name()
20520 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_name()
20555 cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind, in cp_parser_omp_var_list_no_open() argument
20562 name = cp_parser_id_expression (parser, /*template_p=*/false, in cp_parser_omp_var_list_no_open()
20570 decl = cp_parser_lookup_name_simple (parser, name); in cp_parser_omp_var_list_no_open()
20572 cp_parser_name_lookup_error (parser, name, decl, NULL); in cp_parser_omp_var_list_no_open()
20584 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_omp_var_list_no_open()
20586 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_var_list_no_open()
20589 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_omp_var_list_no_open()
20596 ending = cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_omp_var_list_no_open()
20611 cp_parser_omp_var_list (cp_parser *parser, enum omp_clause_code kind, tree list) in cp_parser_omp_var_list() argument
20613 if (cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_omp_var_list()
20614 return cp_parser_omp_var_list_no_open (parser, kind, list); in cp_parser_omp_var_list()
20622 cp_parser_omp_clause_default (cp_parser *parser, tree list) in cp_parser_omp_clause_default() argument
20627 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_omp_clause_default()
20629 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_default()
20631 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_default()
20652 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_default()
20657 cp_parser_error (parser, "expected %<none%> or %<shared%>"); in cp_parser_omp_clause_default()
20660 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_omp_clause_default()
20661 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_default()
20680 cp_parser_omp_clause_if (cp_parser *parser, tree list) in cp_parser_omp_clause_if() argument
20684 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_omp_clause_if()
20687 t = cp_parser_condition (parser); in cp_parser_omp_clause_if()
20690 || !cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_omp_clause_if()
20691 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_if()
20708 cp_parser_omp_clause_nowait (cp_parser *parser ATTRIBUTE_UNUSED, tree list) in cp_parser_omp_clause_nowait()
20723 cp_parser_omp_clause_num_threads (cp_parser *parser, tree list) in cp_parser_omp_clause_num_threads() argument
20727 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_omp_clause_num_threads()
20730 t = cp_parser_expression (parser, false); in cp_parser_omp_clause_num_threads()
20733 || !cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_omp_clause_num_threads()
20734 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_num_threads()
20751 cp_parser_omp_clause_ordered (cp_parser *parser ATTRIBUTE_UNUSED, tree list) in cp_parser_omp_clause_ordered()
20769 cp_parser_omp_clause_reduction (cp_parser *parser, tree list) in cp_parser_omp_clause_reduction() argument
20774 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_omp_clause_reduction()
20777 switch (cp_lexer_peek_token (parser->lexer)->type) in cp_parser_omp_clause_reduction()
20804 cp_parser_error (parser, "`+', `*', `-', `&', `^', `|', `&&', or `||'"); in cp_parser_omp_clause_reduction()
20806 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_reduction()
20811 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_reduction()
20813 if (!cp_parser_require (parser, CPP_COLON, "`:'")) in cp_parser_omp_clause_reduction()
20816 nlist = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_REDUCTION, list); in cp_parser_omp_clause_reduction()
20831 cp_parser_omp_clause_schedule (cp_parser *parser, tree list) in cp_parser_omp_clause_schedule() argument
20835 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in cp_parser_omp_clause_schedule()
20840 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_schedule()
20842 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_schedule()
20869 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_STATIC)) in cp_parser_omp_clause_schedule()
20873 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_schedule()
20875 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_clause_schedule()
20877 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_schedule()
20879 t = cp_parser_assignment_expression (parser, false); in cp_parser_omp_clause_schedule()
20889 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_omp_clause_schedule()
20892 else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`,' or `)'")) in cp_parser_omp_clause_schedule()
20900 cp_parser_error (parser, "invalid schedule kind"); in cp_parser_omp_clause_schedule()
20902 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_schedule()
20913 cp_parser_omp_all_clauses (cp_parser *parser, unsigned int mask, in cp_parser_omp_all_clauses() argument
20918 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL)) in cp_parser_omp_all_clauses()
20920 pragma_omp_clause c_kind = cp_parser_omp_clause_name (parser); in cp_parser_omp_all_clauses()
20927 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_COPYIN, clauses); in cp_parser_omp_all_clauses()
20931 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_COPYPRIVATE, in cp_parser_omp_all_clauses()
20936 clauses = cp_parser_omp_clause_default (parser, clauses); in cp_parser_omp_all_clauses()
20940 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_FIRSTPRIVATE, in cp_parser_omp_all_clauses()
20945 clauses = cp_parser_omp_clause_if (parser, clauses); in cp_parser_omp_all_clauses()
20949 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_LASTPRIVATE, in cp_parser_omp_all_clauses()
20954 clauses = cp_parser_omp_clause_nowait (parser, clauses); in cp_parser_omp_all_clauses()
20958 clauses = cp_parser_omp_clause_num_threads (parser, clauses); in cp_parser_omp_all_clauses()
20962 clauses = cp_parser_omp_clause_ordered (parser, clauses); in cp_parser_omp_all_clauses()
20966 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_PRIVATE, in cp_parser_omp_all_clauses()
20971 clauses = cp_parser_omp_clause_reduction (parser, clauses); in cp_parser_omp_all_clauses()
20975 clauses = cp_parser_omp_clause_schedule (parser, clauses); in cp_parser_omp_all_clauses()
20979 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_SHARED, in cp_parser_omp_all_clauses()
20984 cp_parser_error (parser, "expected %<#pragma omp%> clause"); in cp_parser_omp_all_clauses()
20997 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_all_clauses()
21010 cp_parser_begin_omp_structured_block (cp_parser *parser) in cp_parser_begin_omp_structured_block() argument
21012 unsigned save = parser->in_statement; in cp_parser_begin_omp_structured_block()
21022 if (parser->in_statement) in cp_parser_begin_omp_structured_block()
21023 parser->in_statement = IN_OMP_BLOCK; in cp_parser_begin_omp_structured_block()
21029 cp_parser_end_omp_structured_block (cp_parser *parser, unsigned save) in cp_parser_end_omp_structured_block() argument
21031 parser->in_statement = save; in cp_parser_end_omp_structured_block()
21035 cp_parser_omp_structured_block (cp_parser *parser) in cp_parser_omp_structured_block() argument
21038 unsigned int save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_structured_block()
21040 cp_parser_statement (parser, NULL_TREE, false, NULL); in cp_parser_omp_structured_block()
21042 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_structured_block()
21058 cp_parser_omp_atomic (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_atomic() argument
21063 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_atomic()
21065 lhs = cp_parser_unary_expression (parser, /*address_p=*/false, in cp_parser_omp_atomic()
21087 switch (cp_lexer_peek_token (parser->lexer)->type) in cp_parser_omp_atomic()
21117 cp_parser_error (parser, in cp_parser_omp_atomic()
21121 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
21123 rhs = cp_parser_expression (parser, false); in cp_parser_omp_atomic()
21129 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_omp_atomic()
21133 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_omp_atomic()
21141 cp_parser_omp_barrier (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_barrier() argument
21143 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_barrier()
21152 cp_parser_omp_critical (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_critical() argument
21156 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_omp_critical()
21158 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_critical()
21160 name = cp_parser_identifier (parser); in cp_parser_omp_critical()
21163 || !cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_omp_critical()
21164 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_critical()
21170 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_critical()
21172 stmt = cp_parser_omp_structured_block (parser); in cp_parser_omp_critical()
21184 cp_parser_omp_flush (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_flush() argument
21186 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_omp_flush()
21187 (void) cp_parser_omp_var_list (parser, 0, NULL); in cp_parser_omp_flush()
21188 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_flush()
21196 cp_parser_omp_for_loop (cp_parser *parser) in cp_parser_omp_for_loop() argument
21201 if (!cp_lexer_next_token_is_keyword (parser->lexer, RID_FOR)) in cp_parser_omp_for_loop()
21203 cp_parser_error (parser, "for statement expected"); in cp_parser_omp_for_loop()
21206 loc = cp_lexer_consume_token (parser->lexer)->location; in cp_parser_omp_for_loop()
21207 if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('")) in cp_parser_omp_for_loop()
21212 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_omp_for_loop()
21219 cp_parser_parse_tentatively (parser); in cp_parser_omp_for_loop()
21220 cp_parser_type_specifier_seq (parser, /*is_condition=*/false, in cp_parser_omp_for_loop()
21222 if (!cp_parser_error_occurred (parser)) in cp_parser_omp_for_loop()
21227 declarator = cp_parser_declarator (parser, in cp_parser_omp_for_loop()
21232 attributes = cp_parser_attributes_opt (parser); in cp_parser_omp_for_loop()
21233 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_omp_for_loop()
21235 cp_parser_require (parser, CPP_EQ, "`='"); in cp_parser_omp_for_loop()
21236 if (cp_parser_parse_definitely (parser)) in cp_parser_omp_for_loop()
21245 init = cp_parser_assignment_expression (parser, false); in cp_parser_omp_for_loop()
21255 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_for_loop()
21260 init = cp_parser_expression (parser, false); in cp_parser_omp_for_loop()
21262 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_omp_for_loop()
21266 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_omp_for_loop()
21267 cond = cp_parser_condition (parser); in cp_parser_omp_for_loop()
21268 cp_parser_require (parser, CPP_SEMICOLON, "`;'"); in cp_parser_omp_for_loop()
21271 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_omp_for_loop()
21272 incr = cp_parser_expression (parser, false); in cp_parser_omp_for_loop()
21274 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'")) in cp_parser_omp_for_loop()
21275 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_for_loop()
21281 parser->in_statement = IN_OMP_FOR; in cp_parser_omp_for_loop()
21286 cp_parser_statement (parser, NULL_TREE, false, NULL); in cp_parser_omp_for_loop()
21306 cp_parser_omp_for (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_for() argument
21311 clauses = cp_parser_omp_all_clauses (parser, OMP_FOR_CLAUSE_MASK, in cp_parser_omp_for()
21315 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_for()
21317 ret = cp_parser_omp_for_loop (parser); in cp_parser_omp_for()
21321 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_for()
21332 cp_parser_omp_master (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_master() argument
21334 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_master()
21335 return c_finish_omp_master (cp_parser_omp_structured_block (parser)); in cp_parser_omp_master()
21343 cp_parser_omp_ordered (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_ordered() argument
21345 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_ordered()
21346 return c_finish_omp_ordered (cp_parser_omp_structured_block (parser)); in cp_parser_omp_ordered()
21359 cp_parser_omp_sections_scope (cp_parser *parser) in cp_parser_omp_sections_scope() argument
21365 if (!cp_parser_require (parser, CPP_OPEN_BRACE, "`{'")) in cp_parser_omp_sections_scope()
21370 if (cp_lexer_peek_token (parser->lexer)->pragma_kind != PRAGMA_OMP_SECTION) in cp_parser_omp_sections_scope()
21375 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_sections_scope()
21379 cp_parser_statement (parser, NULL_TREE, false, NULL); in cp_parser_omp_sections_scope()
21381 tok = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_sections_scope()
21390 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_sections_scope()
21398 tok = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_sections_scope()
21406 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_sections_scope()
21407 cp_parser_require_pragma_eol (parser, tok); in cp_parser_omp_sections_scope()
21412 cp_parser_error (parser, "expected %<#pragma omp section%> or %<}%>"); in cp_parser_omp_sections_scope()
21416 substmt = cp_parser_omp_structured_block (parser); in cp_parser_omp_sections_scope()
21420 cp_parser_require (parser, CPP_CLOSE_BRACE, "`}'"); in cp_parser_omp_sections_scope()
21444 cp_parser_omp_sections (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_sections() argument
21448 clauses = cp_parser_omp_all_clauses (parser, OMP_SECTIONS_CLAUSE_MASK, in cp_parser_omp_sections()
21451 ret = cp_parser_omp_sections_scope (parser); in cp_parser_omp_sections()
21474 cp_parser_omp_parallel (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_parallel() argument
21482 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_FOR)) in cp_parser_omp_parallel()
21484 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_parallel()
21490 else if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_parallel()
21492 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_parallel()
21496 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_parallel()
21504 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok); in cp_parser_omp_parallel()
21506 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_parallel()
21511 cp_parser_already_scoped_statement (parser); in cp_parser_omp_parallel()
21517 stmt = cp_parser_omp_for_loop (parser); in cp_parser_omp_parallel()
21524 stmt = cp_parser_omp_sections_scope (parser); in cp_parser_omp_parallel()
21533 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_parallel()
21551 cp_parser_omp_single (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_single() argument
21557 = cp_parser_omp_all_clauses (parser, OMP_SINGLE_CLAUSE_MASK, in cp_parser_omp_single()
21559 OMP_SINGLE_BODY (stmt) = cp_parser_omp_structured_block (parser); in cp_parser_omp_single()
21568 cp_parser_omp_threadprivate (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_threadprivate() argument
21572 vars = cp_parser_omp_var_list (parser, 0, NULL); in cp_parser_omp_threadprivate()
21573 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_threadprivate()
21584 cp_parser_omp_construct (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_construct() argument
21591 cp_parser_omp_atomic (parser, pragma_tok); in cp_parser_omp_construct()
21594 stmt = cp_parser_omp_critical (parser, pragma_tok); in cp_parser_omp_construct()
21597 stmt = cp_parser_omp_for (parser, pragma_tok); in cp_parser_omp_construct()
21600 stmt = cp_parser_omp_master (parser, pragma_tok); in cp_parser_omp_construct()
21603 stmt = cp_parser_omp_ordered (parser, pragma_tok); in cp_parser_omp_construct()
21606 stmt = cp_parser_omp_parallel (parser, pragma_tok); in cp_parser_omp_construct()
21609 stmt = cp_parser_omp_sections (parser, pragma_tok); in cp_parser_omp_construct()
21612 stmt = cp_parser_omp_single (parser, pragma_tok); in cp_parser_omp_construct()
21675 cp_parser_pragma (cp_parser *parser, enum pragma_context context) in cp_parser_pragma() argument
21680 pragma_tok = cp_lexer_consume_token (parser->lexer); in cp_parser_pragma()
21682 parser->lexer->in_pragma = true; in cp_parser_pragma()
21695 cp_parser_omp_barrier (parser, pragma_tok); in cp_parser_pragma()
21710 cp_parser_omp_flush (parser, pragma_tok); in cp_parser_pragma()
21722 cp_parser_omp_threadprivate (parser, pragma_tok); in cp_parser_pragma()
21735 cp_parser_omp_construct (parser, pragma_tok); in cp_parser_pragma()
21749 cp_parser_error (parser, "expected declaration specifiers"); in cp_parser_pragma()
21753 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_pragma()