Commit d9d8f6b1 by Paolo Carlini Committed by Paolo Carlini

parser.c (cp_lexer_set_source_position): New.

2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>

	* parser.c (cp_lexer_set_source_position): New.
	(cp_parser_mem_initializer): Use it.
    	(cp_parser_postfix_open_square_expression): Likewise.
    	(cp_parser_parenthesized_expression_list): Likewise.
    	(cp_parser_new_initializer): Likewise.
    	(cp_parser_jump_statement): Likewise.
    	(cp_parser_initializer): Likewise.
    	(cp_parser_functional_cast): Likewise.

From-SVN: r208378
parent f3ba16d0
2014-03-06 Paolo Carlini <paolo.carlini@oracle.com>
* parser.c (cp_lexer_set_source_position): New.
(cp_parser_mem_initializer): Use it.
(cp_parser_postfix_open_square_expression): Likewise.
(cp_parser_parenthesized_expression_list): Likewise.
(cp_parser_new_initializer): Likewise.
(cp_parser_jump_statement): Likewise.
(cp_parser_initializer): Likewise.
(cp_parser_functional_cast): Likewise.
2014-03-05 Jason Merrill <jason@redhat.com> 2014-03-05 Jason Merrill <jason@redhat.com>
PR c++/60409 PR c++/60409
......
...@@ -844,6 +844,14 @@ cp_lexer_set_source_position_from_token (cp_token *token) ...@@ -844,6 +844,14 @@ cp_lexer_set_source_position_from_token (cp_token *token)
} }
} }
/* Update the globals input_location and the input file stack from LEXER. */
static inline void
cp_lexer_set_source_position (cp_lexer *lexer)
{
cp_token *token = cp_lexer_peek_token (lexer);
cp_lexer_set_source_position_from_token (token);
}
/* Return a pointer to the next token in the token stream, but do not /* Return a pointer to the next token in the token stream, but do not
consume it. */ consume it. */
...@@ -6359,8 +6367,7 @@ cp_parser_postfix_open_square_expression (cp_parser *parser, ...@@ -6359,8 +6367,7 @@ cp_parser_postfix_open_square_expression (cp_parser *parser,
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE))
{ {
bool expr_nonconst_p; bool expr_nonconst_p;
cp_token *token = cp_lexer_peek_token (parser->lexer); cp_lexer_set_source_position (parser->lexer);
cp_lexer_set_source_position_from_token (token);
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
index = cp_parser_braced_list (parser, &expr_nonconst_p); index = cp_parser_braced_list (parser, &expr_nonconst_p);
if (flag_cilkplus if (flag_cilkplus
...@@ -6673,8 +6680,7 @@ cp_parser_parenthesized_expression_list (cp_parser* parser, ...@@ -6673,8 +6680,7 @@ cp_parser_parenthesized_expression_list (cp_parser* parser,
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE))
{ {
/* A braced-init-list. */ /* A braced-init-list. */
cp_token *token = cp_lexer_peek_token (parser->lexer); cp_lexer_set_source_position (parser->lexer);
cp_lexer_set_source_position_from_token (token);
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
expr = cp_parser_braced_list (parser, &expr_non_constant_p); expr = cp_parser_braced_list (parser, &expr_non_constant_p);
if (non_constant_p && expr_non_constant_p) if (non_constant_p && expr_non_constant_p)
...@@ -7523,8 +7529,7 @@ cp_parser_new_initializer (cp_parser* parser) ...@@ -7523,8 +7529,7 @@ cp_parser_new_initializer (cp_parser* parser)
{ {
tree t; tree t;
bool expr_non_constant_p; bool expr_non_constant_p;
cp_token *token = cp_lexer_peek_token (parser->lexer); cp_lexer_set_source_position (parser->lexer);
cp_lexer_set_source_position_from_token (token);
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
t = cp_parser_braced_list (parser, &expr_non_constant_p); t = cp_parser_braced_list (parser, &expr_non_constant_p);
CONSTRUCTOR_IS_DIRECT_INIT (t) = 1; CONSTRUCTOR_IS_DIRECT_INIT (t) = 1;
...@@ -10681,8 +10686,7 @@ cp_parser_jump_statement (cp_parser* parser) ...@@ -10681,8 +10686,7 @@ cp_parser_jump_statement (cp_parser* parser)
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE))
{ {
cp_token *token = cp_lexer_peek_token (parser->lexer); cp_lexer_set_source_position (parser->lexer);
cp_lexer_set_source_position_from_token (token);
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
expr = cp_parser_braced_list (parser, &expr_non_constant_p); expr = cp_parser_braced_list (parser, &expr_non_constant_p);
} }
...@@ -12361,8 +12365,7 @@ cp_parser_mem_initializer (cp_parser* parser) ...@@ -12361,8 +12365,7 @@ cp_parser_mem_initializer (cp_parser* parser)
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE))
{ {
bool expr_non_constant_p; bool expr_non_constant_p;
cp_token *token = cp_lexer_peek_token (parser->lexer); cp_lexer_set_source_position (parser->lexer);
cp_lexer_set_source_position_from_token (token);
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
expression_list = cp_parser_braced_list (parser, &expr_non_constant_p); expression_list = cp_parser_braced_list (parser, &expr_non_constant_p);
CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1; CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1;
...@@ -18816,8 +18819,7 @@ cp_parser_initializer (cp_parser* parser, bool* is_direct_init, ...@@ -18816,8 +18819,7 @@ cp_parser_initializer (cp_parser* parser, bool* is_direct_init,
} }
else if (token->type == CPP_OPEN_BRACE) else if (token->type == CPP_OPEN_BRACE)
{ {
cp_token *token = cp_lexer_peek_token (parser->lexer); cp_lexer_set_source_position (parser->lexer);
cp_lexer_set_source_position_from_token (token);
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
init = cp_parser_braced_list (parser, non_constant_p); init = cp_parser_braced_list (parser, non_constant_p);
CONSTRUCTOR_IS_DIRECT_INIT (init) = 1; CONSTRUCTOR_IS_DIRECT_INIT (init) = 1;
...@@ -23253,8 +23255,7 @@ cp_parser_functional_cast (cp_parser* parser, tree type) ...@@ -23253,8 +23255,7 @@ cp_parser_functional_cast (cp_parser* parser, tree type)
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE))
{ {
cp_token *token = cp_lexer_peek_token (parser->lexer); cp_lexer_set_source_position (parser->lexer);
cp_lexer_set_source_position_from_token (token);
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
expression_list = cp_parser_braced_list (parser, &nonconst_p); expression_list = cp_parser_braced_list (parser, &nonconst_p);
CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1; CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment