Implement -Wimplicit-fallthrough (version 9)
Jason Merrill
jason@redhat.com
Wed Sep 21 14:22:00 GMT 2016
On 09/21/2016 08:44 AM, Marek Polacek wrote:
> @@ -10733,12 +10758,35 @@ cp_parser_expression_statement (cp_parser* parser, tree in_statement_expr)
> statement. */
> if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON))
> {
> + /* This might be attribute fallthrough. */
> + if (cp_lexer_next_token_is_keyword (parser->lexer, RID_ATTRIBUTE))
> {
> + tree attr = cp_parser_gnu_attributes_opt (parser);
> + if (maybe_attribute_fallthrough_p (attr))
> + statement = build_call_expr_internal_loc (token->location,
> + IFN_FALLTHROUGH,
> + void_type_node, 0);
> + else if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON))
> + {
> + cp_parser_error (parser, "only attribute %<fallthrough%> "
> + "can be applied to a null statement");
> + return error_mark_node;
> + }
> + else
> + {
> + cp_parser_error (parser, "expected primary-expression");
> + return error_mark_node;
> + }
> + }
Attributes that we don't handle should be warnings, not errors. Like we
do for C++11 attributes in cp_parser_statement, we should first parse
attributes, then parse the expression-statement, then give any
appropriate warnings.
Jason
More information about the Gcc-patches
mailing list