Since N3994 ended up being rejected and was never included in C++17, I want to remove the support for it. It's easy to bring it back if such a facility is resurrected, but for now, let's remove such an extension.
Tested on Linux-PPC64. /cp 2015-10-31 Ville Voutilainen <ville.voutilai...@gmail.com> Remove the implementation of N3994, terse range-for loops. * parser.c (cp_parser_for_init_statement): Remove the parsing of a terse range-for. /testsuite 2015-10-31 Ville Voutilainen <ville.voutilai...@gmail.com> Remove the implementation of N3994, terse range-for loops. * g++.dg/cpp1z/range-for1.C: Remove.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c8f8b3d..8ca82d3 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -11279,22 +11279,6 @@ cp_parser_for_init_statement (cp_parser* parser, tree *decl) bool is_range_for = false; bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; - if (cp_lexer_next_token_is (parser->lexer, CPP_NAME) - && cp_lexer_nth_token_is (parser->lexer, 2, CPP_COLON)) - { - /* N3994 -- for (id : init) ... */ - if (cxx_dialect < cxx1z) - pedwarn (input_location, 0, "range-based for loop without a " - "type-specifier only available with " - "-std=c++1z or -std=gnu++1z"); - tree name = cp_parser_identifier (parser); - tree type = cp_build_reference_type (make_auto (), /*rval*/true); - *decl = build_decl (input_location, VAR_DECL, name, type); - pushdecl (*decl); - cp_lexer_consume_token (parser->lexer); - return true; - } - /* A colon is used in range-based for. */ parser->colon_corrects_to_scope_p = false; diff --git a/gcc/testsuite/g++.dg/cpp1z/range-for1.C b/gcc/testsuite/g++.dg/cpp1z/range-for1.C deleted file mode 100644 index 7e6d055..0000000 --- a/gcc/testsuite/g++.dg/cpp1z/range-for1.C +++ /dev/null @@ -1,12 +0,0 @@ -// { dg-options "-std=c++1z -pedantic-errors" } - -extern "C" int printf (const char *, ...); -#include <initializer_list> - -int main() -{ - for (i : {1,2}) - { - printf ("%d ", i); - } -}