diff options
Diffstat (limited to 'test/SemaCXX/arrow-operator.cpp')
-rw-r--r-- | test/SemaCXX/arrow-operator.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/SemaCXX/arrow-operator.cpp b/test/SemaCXX/arrow-operator.cpp index 6535a0a..173ff72 100644 --- a/test/SemaCXX/arrow-operator.cpp +++ b/test/SemaCXX/arrow-operator.cpp @@ -36,3 +36,31 @@ void f() Line_Segment(node1->Location()); // expected-error {{not a structure or union}} } } + + +namespace arrow_suggest { + +template <typename T> +class wrapped_ptr { + public: + wrapped_ptr(T* ptr) : ptr_(ptr) {} + T* operator->() { return ptr_; } + void Check(); // expected-note {{'Check' declared here}} + private: + T *ptr_; +}; + +class Worker { + public: + void DoSomething(); + void Chuck(); +}; + +void test() { + wrapped_ptr<Worker> worker(new Worker); + worker.DoSomething(); // expected-error {{no member named 'DoSomething' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'; did you mean to use '->' instead of '.'?}} + worker.DoSamething(); // expected-error {{no member named 'DoSamething' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'}} + worker.Chuck(); // expected-error {{no member named 'Chuck' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'; did you mean 'Check'?}} +} + +} // namespace arrow_suggest |