aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2014-06-26 14:15:42 -0400
committerJason Merrill <jason@gcc.gnu.org>2014-06-26 14:15:42 -0400
commit7fb3df5ef09e0da3963aa888584f6f7524e13b07 (patch)
treeab1e306f5890b594fd02da3080a0b6438f05fc12
parentdaa04b0ad91e1994e53bcad3930d2bf4ae8ef04d (diff)
downloadgcc-7fb3df5ef09e0da3963aa888584f6f7524e13b07.zip
gcc-7fb3df5ef09e0da3963aa888584f6f7524e13b07.tar.gz
gcc-7fb3df5ef09e0da3963aa888584f6f7524e13b07.tar.bz2
parser.c (cp_parser_for_init_statement): Change range-for error to pedwarn.
* parser.c (cp_parser_for_init_statement): Change range-for error to pedwarn. From-SVN: r212044
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/parser.c6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for9.C3
3 files changed, 7 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 669e714..6fbd27a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2014-06-26 Jason Merrill <jason@redhat.com>
+ * parser.c (cp_parser_for_init_statement): Change range-for error
+ to pedwarn.
+
N3994 Ranged-based for-loops: The Next Generation
* parser.c (cp_lexer_nth_token_is): New.
(cp_parser_for_init_statement): Allow "for (id : init)".
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 426dca4..a7edd41 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -10647,9 +10647,9 @@ cp_parser_for_init_statement (cp_parser* parser, tree *decl)
is_range_for = true;
if (cxx_dialect < cxx11)
{
- error_at (cp_lexer_peek_token (parser->lexer)->location,
- "range-based %<for%> loops are not allowed "
- "in C++98 mode");
+ pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0,
+ "range-based %<for%> loops only available with "
+ "-std=c++11 or -std=gnu++11");
*decl = error_mark_node;
}
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for9.C b/gcc/testsuite/g++.dg/cpp0x/range-for9.C
index c51cbf9..6a50ec3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/range-for9.C
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for9.C
@@ -1,7 +1,6 @@
// Test for range-based for loop error in C++98 mode
-// { dg-do compile }
-// { dg-options "-std=c++98" }
+// { dg-do compile { target { ! c++11 } } }
void test()
{