blob: 173ff729fc1b998f9e151f1cfb372ee0c4f49d21 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Anders Carlssone30572a2009-09-10 23:18:36 +00002struct T {
3 void f();
4};
5
6struct A {
7 T* operator->(); // expected-note{{candidate function}}
8};
9
10struct B {
11 T* operator->(); // expected-note{{candidate function}}
12};
13
14struct C : A, B {
15};
16
17struct D : A { };
18
John McCall7c2342d2010-03-10 11:27:22 +000019struct E; // expected-note {{forward declaration of 'E'}}
Eli Friedmanf43fb722009-11-18 01:28:03 +000020
21void f(C &c, D& d, E& e) {
Anders Carlssone30572a2009-09-10 23:18:36 +000022 c->f(); // expected-error{{use of overloaded operator '->' is ambiguous}}
23 d->f();
Eli Friedmanf43fb722009-11-18 01:28:03 +000024 e->f(); // expected-error{{incomplete definition of type}}
Daniel Dunbar4fcfde42009-11-08 01:45:36 +000025}
Argyrios Kyrtzidisdf8dc5d2011-01-25 23:16:36 +000026
27// rdar://8875304
28namespace rdar8875304 {
29class Point {};
30class Line_Segment{ public: Line_Segment(const Point&){} };
31class Node { public: Point Location(){ Point p; return p; } };
32
33void f()
34{
35 Node** node1;
36 Line_Segment(node1->Location()); // expected-error {{not a structure or union}}
37}
38}
Kaelyn Uhrain2b90f762012-04-25 19:49:54 +000039
40
41namespace arrow_suggest {
42
43template <typename T>
44class wrapped_ptr {
45 public:
46 wrapped_ptr(T* ptr) : ptr_(ptr) {}
47 T* operator->() { return ptr_; }
48 void Check(); // expected-note {{'Check' declared here}}
49 private:
50 T *ptr_;
51};
52
53class Worker {
54 public:
55 void DoSomething();
56 void Chuck();
57};
58
59void test() {
60 wrapped_ptr<Worker> worker(new Worker);
61 worker.DoSomething(); // expected-error {{no member named 'DoSomething' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'; did you mean to use '->' instead of '.'?}}
62 worker.DoSamething(); // expected-error {{no member named 'DoSamething' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'}}
63 worker.Chuck(); // expected-error {{no member named 'Chuck' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'; did you mean 'Check'?}}
64}
65
66} // namespace arrow_suggest