diff options
Diffstat (limited to 'test/SemaObjC/synthesized-ivar.m')
-rw-r--r-- | test/SemaObjC/synthesized-ivar.m | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/test/SemaObjC/synthesized-ivar.m b/test/SemaObjC/synthesized-ivar.m index 58bcf40..3bc372b 100644 --- a/test/SemaObjC/synthesized-ivar.m +++ b/test/SemaObjC/synthesized-ivar.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -fobjc-nonfragile-abi -verify %s +// RUN: %clang_cc1 -fsyntax-only -fobjc-nonfragile-abi -fobjc-default-synthesize-properties -verify %s @interface I { } @@ -12,5 +12,42 @@ } @end -// rdar: // 7823675 -int f0(I *a) { return a->IP; } // expected-error {{instance variable 'IP' is protected}} +// rdar://7823675 +int f0(I *a) { return a->IP; } // expected-error {{instance variable 'IP' is private}} + +// rdar://8769582 + +@interface I1 { + int protected_ivar; +} +@property int PROP_INMAIN; +@end + +@interface I1() { + int private_ivar; +} +@property int PROP_INCLASSEXT; +@end + +@implementation I1 +- (int) Meth { + PROP_INMAIN = 1; + PROP_INCLASSEXT = 2; + protected_ivar = 1; // OK + return private_ivar; // OK +} +@end + + +@interface DER : I1 +@end + +@implementation DER +- (int) Meth { + protected_ivar = 1; // OK + PROP_INMAIN = 1; // expected-error {{instance variable 'PROP_INMAIN' is private}} + PROP_INCLASSEXT = 2; // expected-error {{instance variable 'PROP_INCLASSEXT' is private}} + return private_ivar; // expected-error {{instance variable 'private_ivar' is private}} +} +@end + |