summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorSam Panzer <espanz@gmail.com>2012-09-06 21:50:08 +0000
committerSam Panzer <espanz@gmail.com>2012-09-06 21:50:08 +0000
commit22a3fe1b9c95e0fb4500593af2d47005b3a2d955 (patch)
treed604bb0143dd9275c9bfca12962d2df04d0577a3 /clang/test
parent33fa1df67dd7c139f93ba9993f9bec424a4dbfb4 (diff)
downloadbcm5719-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.cpp19
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 {
OpenPOWER on IntegriCloud