1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
2 | // expected-no-diagnostics |
3 | |
4 | // REQUIRES: LP64 |
5 | |
6 | @interface G |
7 | @end |
8 | |
9 | @interface F |
10 | - (void)bar:(id *)objects; |
11 | - (void)foo:(G**)objects; |
12 | @end |
13 | |
14 | |
15 | void a() { |
16 | F *b; |
17 | G **keys; |
18 | [b bar:keys]; |
19 | |
20 | id *PID; |
21 | [b foo:PID]; |
22 | |
23 | } |
24 | |
25 | |
26 | // pr7936 |
27 | @interface I1 @end |
28 | |
29 | class Wrapper { |
30 | public: |
31 | operator id() const { return (id)_value; } |
32 | operator Class() const { return (Class)_value; } |
33 | operator I1*() const { return (I1*)_value; } |
34 | |
35 | bool Compare(id obj) { return *this == obj; } |
36 | bool CompareClass(Class obj) { return *this == obj; } |
37 | bool CompareI1(I1* obj) { return *this == obj; } |
38 | |
39 | Wrapper &operator*(); |
40 | Wrapper &operator[](int); |
41 | Wrapper& operator->*(int); |
42 | |
43 | private: |
44 | long _value; |
45 | }; |
46 | |
47 | void f() { |
48 | Wrapper w; |
49 | w[0]; |
50 | *w; |
51 | w->*(0); |
52 | } |
53 | |