1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 2*67e74705SXin Li@interface I 3*67e74705SXin Li{ 4*67e74705SXin Li} 5*67e74705SXin Li@property int IP; 6*67e74705SXin Li@end 7*67e74705SXin Li 8*67e74705SXin Li@implementation I 9*67e74705SXin Li@synthesize IP; 10*67e74705SXin Li- (int) Meth { 11*67e74705SXin Li return IP; 12*67e74705SXin Li} 13*67e74705SXin Li@end 14*67e74705SXin Li 15*67e74705SXin Li// rdar://7823675 16*67e74705SXin Liint f0(I *a) { return a->IP; } // expected-error {{instance variable 'IP' is private}} 17*67e74705SXin Li 18*67e74705SXin Li// rdar://8769582 19*67e74705SXin Li 20*67e74705SXin Li@interface I1 { 21*67e74705SXin Li int protected_ivar; 22*67e74705SXin Li} 23*67e74705SXin Li@property int PROP_INMAIN; 24*67e74705SXin Li@end 25*67e74705SXin Li 26*67e74705SXin Li@interface I1() { 27*67e74705SXin Li int private_ivar; 28*67e74705SXin Li} 29*67e74705SXin Li@property int PROP_INCLASSEXT; 30*67e74705SXin Li@end 31*67e74705SXin Li 32*67e74705SXin Li@implementation I1 33*67e74705SXin Li- (int) Meth { 34*67e74705SXin Li _PROP_INMAIN = 1; 35*67e74705SXin Li _PROP_INCLASSEXT = 2; 36*67e74705SXin Li protected_ivar = 1; // OK 37*67e74705SXin Li return private_ivar; // OK 38*67e74705SXin Li} 39*67e74705SXin Li@end 40*67e74705SXin Li 41*67e74705SXin Li 42*67e74705SXin Li@interface DER : I1 43*67e74705SXin Li@end 44*67e74705SXin Li 45*67e74705SXin Li@implementation DER 46*67e74705SXin Li- (int) Meth { 47*67e74705SXin Li protected_ivar = 1; // OK 48*67e74705SXin Li _PROP_INMAIN = 1; // expected-error {{instance variable '_PROP_INMAIN' is private}} 49*67e74705SXin Li _PROP_INCLASSEXT = 2; // expected-error {{instance variable '_PROP_INCLASSEXT' is private}} 50*67e74705SXin Li return private_ivar; // expected-error {{instance variable 'private_ivar' is private}} 51*67e74705SXin Li} 52*67e74705SXin Li@end 53*67e74705SXin Li 54*67e74705SXin Li@interface A 55*67e74705SXin Li@property (weak) id testObjectWeakProperty; // expected-note {{declared here}} 56*67e74705SXin Li@end 57*67e74705SXin Li 58*67e74705SXin Li@implementation A 59*67e74705SXin Li// rdar://9605088 60*67e74705SXin Li@synthesize testObjectWeakProperty; // expected-error {{cannot synthesize weak property because the current deployment target does not support weak references}} 61*67e74705SXin Li@end 62