From: Jason Merrill Date: Wed, 5 Mar 2014 17:53:21 +0000 (-0500) Subject: parser.c (cp_parser_mem_initializer): Set input_location properly for init-list warning. X-Git-Tag: releases/gcc-4.9.0~567 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=047023865e1edc63c708fb0f4475958119955928;p=thirdparty%2Fgcc.git parser.c (cp_parser_mem_initializer): Set input_location properly for init-list warning. * parser.c (cp_parser_mem_initializer): Set input_location properly for init-list warning. (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: r208350 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6f2b38a0cd26..379ac736ed17 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2014-03-05 Jason Merrill + + * parser.c (cp_parser_mem_initializer): Set input_location + properly for init-list warning. + (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-04 Jason Merrill PR c++/60417 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index bb7d2685f121..5b3e48951acf 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6359,6 +6359,8 @@ cp_parser_postfix_open_square_expression (cp_parser *parser, if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { bool expr_nonconst_p; + cp_token *token = cp_lexer_peek_token (parser->lexer); + cp_lexer_set_source_position_from_token (token); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); index = cp_parser_braced_list (parser, &expr_nonconst_p); if (flag_cilkplus @@ -6671,6 +6673,8 @@ cp_parser_parenthesized_expression_list (cp_parser* parser, if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { /* A braced-init-list. */ + cp_token *token = cp_lexer_peek_token (parser->lexer); + cp_lexer_set_source_position_from_token (token); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expr = cp_parser_braced_list (parser, &expr_non_constant_p); if (non_constant_p && expr_non_constant_p) @@ -7519,6 +7523,8 @@ cp_parser_new_initializer (cp_parser* parser) { tree t; bool expr_non_constant_p; + cp_token *token = cp_lexer_peek_token (parser->lexer); + cp_lexer_set_source_position_from_token (token); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); t = cp_parser_braced_list (parser, &expr_non_constant_p); CONSTRUCTOR_IS_DIRECT_INIT (t) = 1; @@ -10675,6 +10681,8 @@ cp_parser_jump_statement (cp_parser* parser) 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_from_token (token); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expr = cp_parser_braced_list (parser, &expr_non_constant_p); } @@ -12353,6 +12361,8 @@ cp_parser_mem_initializer (cp_parser* parser) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { bool expr_non_constant_p; + cp_token *token = cp_lexer_peek_token (parser->lexer); + cp_lexer_set_source_position_from_token (token); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expression_list = cp_parser_braced_list (parser, &expr_non_constant_p); CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1; @@ -18801,6 +18811,8 @@ cp_parser_initializer (cp_parser* parser, bool* is_direct_init, } else if (token->type == CPP_OPEN_BRACE) { + cp_token *token = cp_lexer_peek_token (parser->lexer); + cp_lexer_set_source_position_from_token (token); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); init = cp_parser_braced_list (parser, non_constant_p); CONSTRUCTOR_IS_DIRECT_INIT (init) = 1; @@ -23236,6 +23248,8 @@ cp_parser_functional_cast (cp_parser* parser, tree type) 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_from_token (token); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expression_list = cp_parser_braced_list (parser, &nonconst_p); CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1; diff --git a/gcc/testsuite/g++.dg/template/crash90.C b/gcc/testsuite/g++.dg/template/crash90.C index 6fe247cc30df..4cfc40822a86 100644 --- a/gcc/testsuite/g++.dg/template/crash90.C +++ b/gcc/testsuite/g++.dg/template/crash90.C @@ -4,5 +4,4 @@ template < unsigned > struct A ; template < typename > struct B ; -template < typename T , A < B < T > // { dg-error "initializer|parse error|valid type|expected" } -{ } +template < typename T , A < B < T > {}// { dg-error "initializer|parse error|type|expected" }