diff options
| author | John McCall <rjmccall@apple.com> | 2010-01-07 02:04:15 +0000 |
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2010-01-07 02:04:15 +0000 |
| commit | 0237485287e9b30a811ac79264d84acabae77895 (patch) | |
| tree | e4cbe677d18932df4bb79af646c9d3065a133d6b /clang/test/SemaCXX/overloaded-operator.cpp | |
| parent | 9855a6bb7c6f4ff756d6aa19e9561364340c3880 (diff) | |
| download | bcm5719-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.cpp | 24 |
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}} + } +} |

