summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/overloaded-operator.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-01-07 02:04:15 +0000
committerJohn McCall <rjmccall@apple.com>2010-01-07 02:04:15 +0000
commit0237485287e9b30a811ac79264d84acabae77895 (patch)
treee4cbe677d18932df4bb79af646c9d3065a133d6b /clang/test/SemaCXX/overloaded-operator.cpp
parent9855a6bb7c6f4ff756d6aa19e9561364340c3880 (diff)
downloadbcm5719-llvm-0237485287e9b30a811ac79264d84acabae77895.tar.gz
bcm5719-llvm-0237485287e9b30a811ac79264d84acabae77895.zip
Improve the lead diagnostic for C++ object subscript expressions with
no viable overloads. Use a different message when the class provides no operator[] overloads at all; use it for operator(), too. Partially addresses PR 5900. llvm-svn: 92894
Diffstat (limited to 'clang/test/SemaCXX/overloaded-operator.cpp')
-rw-r--r--clang/test/SemaCXX/overloaded-operator.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/overloaded-operator.cpp b/clang/test/SemaCXX/overloaded-operator.cpp
index a20c69b8d5d..5c4db7f7f8b 100644
--- a/clang/test/SemaCXX/overloaded-operator.cpp
+++ b/clang/test/SemaCXX/overloaded-operator.cpp
@@ -324,3 +324,27 @@ namespace pr5512 {
a += x;
}
}
+
+// PR5900
+namespace pr5900 {
+ struct NotAnArray {};
+ void test0() {
+ NotAnArray x;
+ x[0] = 0; // expected-error {{does not provide a subscript operator}}
+ }
+
+ struct NonConstArray {
+ int operator[](unsigned); // expected-note {{candidate}}
+ };
+ int test1() {
+ const NonConstArray x;
+ return x[0]; // expected-error {{no viable overloaded operator[] for type}}
+ }
+
+ // Not really part of this PR, but implemented at the same time.
+ struct NotAFunction {};
+ void test2() {
+ NotAFunction x;
+ x(); // expected-error {{does not provide a call operator}}
+ }
+}
OpenPOWER on IntegriCloud