]> gcc.gnu.org Git - gcc.git/commitdiff
parser.c (cp_parser_mem_initializer): Set input_location properly for init-list warning.
authorJason Merrill <jason@redhat.com>
Wed, 5 Mar 2014 17:53:21 +0000 (12:53 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 5 Mar 2014 17:53:21 +0000 (12:53 -0500)
* 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

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/g++.dg/template/crash90.C

index 6f2b38a0cd26a8a701bae088ef49a0bc9830c826..379ac736ed17209cd938390cb1eeeeda83af9def 100644 (file)
@@ -1,3 +1,14 @@
+2014-03-05  Jason Merrill  <jason@redhat.com>
+
+       * 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  <jason@redhat.com>
 
        PR c++/60417
index bb7d2685f12148acb5d98dbe84f125679341395d..5b3e48951acfd75a448399363f212b7f407560e4 100644 (file)
@@ -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;
index 6fe247cc30df0697079f0b4fdd85ac7863279a86..4cfc40822a864857af38cec1793f3a1aa577fbab 100644 (file)
@@ -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" }
This page took 0.09248 seconds and 5 git commands to generate.