blob: 4becaaf058e2137730598009039c93942de29962 [file] [log] [blame]
Fariborz Jahanian42ffdb32010-01-18 22:59:22 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Andy Gibbsc6e68da2012-10-19 12:44:48 +00002// expected-no-diagnostics
Fariborz Jahanian42ffdb32010-01-18 22:59:22 +00003
4@interface G
5@end
6
7@interface F
8- (void)bar:(id *)objects;
9- (void)foo:(G**)objects;
10@end
11
12
13void a() {
14 F *b;
15 G **keys;
16 [b bar:keys];
17
18 id *PID;
19 [b foo:PID];
20
21}
22
Fariborz Jahaniane4151b52010-08-21 00:10:36 +000023
24// pr7936
25@interface I1 @end
26
27class Wrapper {
28public:
29 operator id() const { return (id)_value; }
30 operator Class() const { return (Class)_value; }
31 operator I1*() const { return (I1*)_value; }
32
33 bool Compare(id obj) { return *this == obj; }
34 bool CompareClass(Class obj) { return *this == obj; }
35 bool CompareI1(I1* obj) { return *this == obj; }
36
Argyrios Kyrtzidis421ad5e2010-08-23 07:12:16 +000037 Wrapper &operator*();
38 Wrapper &operator[](int);
39 Wrapper& operator->*(int);
40
Fariborz Jahaniane4151b52010-08-21 00:10:36 +000041private:
42 long _value;
43};
44
Argyrios Kyrtzidis421ad5e2010-08-23 07:12:16 +000045void f() {
46 Wrapper w;
47 w[0];
48 *w;
49 w->*(0);
50}