diff options
Diffstat (limited to 'clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm')
| -rw-r--r-- | clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm | 49 | 
1 files changed, 49 insertions, 0 deletions
diff --git a/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm b/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm new file mode 100644 index 0000000..d0f8404 --- /dev/null +++ b/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm @@ -0,0 +1,49 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +@interface G +@end + +@interface F +- (void)bar:(id *)objects; +- (void)foo:(G**)objects; +@end + + +void a() { +	F *b; +	G **keys; +	[b bar:keys]; + +	id *PID; +	[b foo:PID]; + +} + + +// pr7936 +@interface I1 @end + +class Wrapper { +public: +  operator id() const { return (id)_value; } +  operator Class() const { return (Class)_value; } +  operator I1*() const { return (I1*)_value; } + +  bool Compare(id obj) { return *this == obj; } +  bool CompareClass(Class obj) { return *this == obj; } +  bool CompareI1(I1* obj) { return *this == obj; } + +  Wrapper &operator*(); +  Wrapper &operator[](int); +  Wrapper& operator->*(int); + +private: +  long _value; +}; + +void f() { +  Wrapper w; +  w[0]; +  *w; +  w->*(0); +}  | 
