diff options
Diffstat (limited to 'test/SemaCXX/for-range-examples.cpp')
-rw-r--r-- | test/SemaCXX/for-range-examples.cpp | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/test/SemaCXX/for-range-examples.cpp b/test/SemaCXX/for-range-examples.cpp index b3cf9c3..2f777fb 100644 --- a/test/SemaCXX/for-range-examples.cpp +++ b/test/SemaCXX/for-range-examples.cpp @@ -176,8 +176,9 @@ namespace test4 { // Make sure these don't crash. Better diagnostics would be nice. for (: {1, 2, 3}) {} // expected-error {{expected expression}} expected-error {{expected ';'}} - for (x : {1, 2, 3}) {} // expected-error {{undeclared identifier}} expected-error {{expected ';'}} - for (y : {1, 2, 3}) {} // expected-error {{must declare a variable}} expected-warning {{result unused}} + for (1 : {1, 2, 3}) {} // expected-error {{must declare a variable}} expected-warning {{result unused}} + for (+x : {1, 2, 3}) {} // expected-error {{undeclared identifier}} expected-error {{expected ';'}} + for (+y : {1, 2, 3}) {} // expected-error {{must declare a variable}} expected-warning {{result unused}} } } @@ -209,3 +210,32 @@ namespace test6 { // expected-error@-1 {{cannot build range expression with array function parameter 'arr' since parameter with array type 'test6::vector []' is treated as pointer type 'test6::vector *'}} } } + +namespace test7 { + void f() { + int arr[5], b; + for (a : arr) {} // expected-warning {{extension}} + // FIXME: Give a -Wshadow for this by default? + for (b : arr) {} // expected-warning {{extension}} + for (arr : arr) {} // expected-warning {{extension}} + for (c alignas(8) : arr) { // expected-warning {{extension}} + static_assert(alignof(c) == 8, ""); // expected-warning {{extension}} + } + // FIXME: We should reject this, but don't, because we only check the + // attribute before we deduce the 'auto' type. + for (d alignas(1) : arr) {} // expected-warning {{extension}} + for (e [[deprecated]] : arr) { e = 0; } // expected-warning {{deprecated}} expected-note {{here}} expected-warning {{extension}} + } +} + +namespace pr18587 { + class Arg {}; + struct Cont { + int *begin(); + int *end(); + }; + void AddAllArgs(Cont &x) { + for (auto Arg: x) { + } + } +} |