summaryrefslogtreecommitdiffstats
path: root/test/SemaCXX/arrow-operator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaCXX/arrow-operator.cpp')
-rw-r--r--test/SemaCXX/arrow-operator.cpp28
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
OpenPOWER on IntegriCloud