diff options
Diffstat (limited to 'test/SemaObjCXX/pointer-to-objc-pointer-conv.mm')
-rw-r--r-- | test/SemaObjCXX/pointer-to-objc-pointer-conv.mm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm b/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm index 80383eb..d0f8404 100644 --- a/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm +++ b/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm @@ -19,3 +19,31 @@ void a() { } + +// 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); +} |