diff options
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r-- | gcc/cp/parser.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c473e7f..03b1ec7 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -14097,6 +14097,9 @@ cp_parser_decl_specifier_seq (cp_parser* parser, ds = ds_concept; cp_lexer_consume_token (parser->lexer); + if (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR) + break; + /* Warn for concept as a decl-specifier. We'll rewrite these as concept declarations later. */ if (!flag_concepts_ts) @@ -14139,6 +14142,10 @@ cp_parser_decl_specifier_seq (cp_parser* parser, ds = ds_typedef; /* Consume the token. */ cp_lexer_consume_token (parser->lexer); + + if (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR) + break; + /* A constructor declarator cannot appear in a typedef. */ constructor_possible_p = false; /* The "typedef" keyword can only occur in a declaration; we @@ -14235,6 +14242,9 @@ cp_parser_decl_specifier_seq (cp_parser* parser, bool is_cv_qualifier; tree type_spec; + if (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR) + flags |= CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS; + type_spec = cp_parser_type_specifier (parser, flags, decl_specs, |