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