diff options
| author | Sam Panzer <espanz@gmail.com> | 2012-09-06 21:50:08 +0000 |
|---|---|---|
| committer | Sam Panzer <espanz@gmail.com> | 2012-09-06 21:50:08 +0000 |
| commit | 22a3fe1b9c95e0fb4500593af2d47005b3a2d955 (patch) | |
| tree | d604bb0143dd9275c9bfca12962d2df04d0577a3 /clang/test | |
| parent | 33fa1df67dd7c139f93ba9993f9bec424a4dbfb4 (diff) | |
| download | bcm5719-llvm-22a3fe1b9c95e0fb4500593af2d47005b3a2d955.tar.gz bcm5719-llvm-22a3fe1b9c95e0fb4500593af2d47005b3a2d955.zip | |
Clarified diagnostics for range-based for loops with invalid ranges
llvm-svn: 163350
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp index 66e30f5dc63..6c6fe091656 100644 --- a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp +++ b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp @@ -129,14 +129,15 @@ void g() { }; for (auto u : NoBegin()) { // expected-error {{range type 'NoBegin' has 'end' member but no 'begin' member}} } - for (auto u : NoEnd()) { // expected-error {{range type 'NoEnd' has 'begin' member but no 'end' member}} + for (auto u : NoEnd()) { // expected-error {{range type 'NoEnd' has 'begin' member but no 'end' member}} } struct NoIncr { void *begin(); // expected-note {{selected 'begin' function with iterator type 'void *'}} void *end(); }; - for (auto u : NoIncr()) { // expected-error {{arithmetic on a pointer to void}} + for (auto u : NoIncr()) { // expected-error {{arithmetic on a pointer to void}}\ + expected-note {{in implicit call to 'operator++' for iterator of type 'NoIncr'}} } struct NoNotEq { @@ -144,7 +145,19 @@ void g() { NoNotEq end(); void operator++(); }; - for (auto u : NoNotEq()) { // expected-error {{invalid operands to binary expression}} + for (auto u : NoNotEq()) { // expected-error {{invalid operands to binary expression}}\ + expected-note {{in implicit call to 'operator!=' for iterator of type 'NoNotEq'}} + } + + struct NoDeref { + NoDeref begin(); // expected-note {{selected 'begin' function}} + NoDeref end(); + void operator++(); + bool operator!=(NoDeref &); + }; + + for (auto u : NoDeref()) { // expected-error {{indirection requires pointer operand}} \ + expected-note {{in implicit call to 'operator*' for iterator of type 'NoDeref'}} } struct NoCopy { |

