1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 2*67e74705SXin Li 3*67e74705SXin Li@interface Super @end 4*67e74705SXin Li 5*67e74705SXin Li@interface INTFSTANDALONE : Super 6*67e74705SXin Li{ 7*67e74705SXin Li id IVAR; // expected-note {{previous definition is here}} 8*67e74705SXin Li} 9*67e74705SXin Li 10*67e74705SXin Li@end 11*67e74705SXin Li 12*67e74705SXin Li@implementation INTFSTANDALONE : Super // expected-warning {{class implementation may not have super class}} 13*67e74705SXin Li{ 14*67e74705SXin Li id PRIV_IVAR; 15*67e74705SXin Li@protected 16*67e74705SXin Li id PRTCTD; 17*67e74705SXin Li@private 18*67e74705SXin Li id IVAR3; 19*67e74705SXin Li int IVAR; // expected-error {{instance variable is already declared}} 20*67e74705SXin Li@public 21*67e74705SXin Li id IVAR4; 22*67e74705SXin Li} 23*67e74705SXin Li@end 24*67e74705SXin Li 25*67e74705SXin Li@interface Base @end 26*67e74705SXin Li 27*67e74705SXin Li@implementation Base { 28*67e74705SXin Li int ivar1; 29*67e74705SXin Li@public 30*67e74705SXin Li int ivar2; 31*67e74705SXin Li} 32*67e74705SXin Li@end 33*67e74705SXin Li 34*67e74705SXin Liid fn1(INTFSTANDALONE *b) { return b->PRIV_IVAR; } // expected-error {{instance variable 'PRIV_IVAR' is private}} 35*67e74705SXin Li 36*67e74705SXin Liid fn2(INTFSTANDALONE *b) { return b->PRTCTD; } // expected-error {{instance variable 'PRTCTD' is protected}} 37*67e74705SXin Li 38*67e74705SXin Liid fn4(INTFSTANDALONE *b) { return b->IVAR4; } 39*67e74705SXin Li 40