xref: /llvm-project/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm (revision d05b01a8df8d612021f88aa8d42baa1fc79b6cc4)
142ffdb32SFariborz Jahanian// RUN: %clang_cc1 -fsyntax-only -verify %s
2c6e68daaSAndy Gibbs// expected-no-diagnostics
342ffdb32SFariborz Jahanian
4*d05b01a8SNAKAMURA Takumi// REQUIRES: LP64
5*d05b01a8SNAKAMURA Takumi
642ffdb32SFariborz Jahanian@interface G
742ffdb32SFariborz Jahanian@end
842ffdb32SFariborz Jahanian
942ffdb32SFariborz Jahanian@interface F
1042ffdb32SFariborz Jahanian- (void)bar:(id *)objects;
1142ffdb32SFariborz Jahanian- (void)foo:(G**)objects;
1242ffdb32SFariborz Jahanian@end
1342ffdb32SFariborz Jahanian
1442ffdb32SFariborz Jahanian
1542ffdb32SFariborz Jahanianvoid a() {
1642ffdb32SFariborz Jahanian	F *b;
1742ffdb32SFariborz Jahanian	G **keys;
1842ffdb32SFariborz Jahanian	[b bar:keys];
1942ffdb32SFariborz Jahanian
2042ffdb32SFariborz Jahanian	id *PID;
2142ffdb32SFariborz Jahanian	[b foo:PID];
2242ffdb32SFariborz Jahanian
2342ffdb32SFariborz Jahanian}
2442ffdb32SFariborz Jahanian
25e4151b59SFariborz Jahanian
26e4151b59SFariborz Jahanian// pr7936
27e4151b59SFariborz Jahanian@interface I1 @end
28e4151b59SFariborz Jahanian
29e4151b59SFariborz Jahanianclass Wrapper {
30e4151b59SFariborz Jahanianpublic:
31e4151b59SFariborz Jahanian  operator id() const { return (id)_value; }
32e4151b59SFariborz Jahanian  operator Class() const { return (Class)_value; }
33e4151b59SFariborz Jahanian  operator I1*() const { return (I1*)_value; }
34e4151b59SFariborz Jahanian
35e4151b59SFariborz Jahanian  bool Compare(id obj) { return *this == obj; }
36e4151b59SFariborz Jahanian  bool CompareClass(Class obj) { return *this == obj; }
37e4151b59SFariborz Jahanian  bool CompareI1(I1* obj) { return *this == obj; }
38e4151b59SFariborz Jahanian
39421ad5e1SArgyrios Kyrtzidis  Wrapper &operator*();
40421ad5e1SArgyrios Kyrtzidis  Wrapper &operator[](int);
41421ad5e1SArgyrios Kyrtzidis  Wrapper& operator->*(int);
42421ad5e1SArgyrios Kyrtzidis
43e4151b59SFariborz Jahanianprivate:
44e4151b59SFariborz Jahanian  long _value;
45e4151b59SFariborz Jahanian};
46e4151b59SFariborz Jahanian
47421ad5e1SArgyrios Kyrtzidisvoid f() {
48421ad5e1SArgyrios Kyrtzidis  Wrapper w;
49421ad5e1SArgyrios Kyrtzidis  w[0];
50421ad5e1SArgyrios Kyrtzidis  *w;
51421ad5e1SArgyrios Kyrtzidis  w->*(0);
52421ad5e1SArgyrios Kyrtzidis}
53