diff options
Diffstat (limited to 'test/SemaObjC/ivar-lookup.m')
-rw-r--r-- | test/SemaObjC/ivar-lookup.m | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/test/SemaObjC/ivar-lookup.m b/test/SemaObjC/ivar-lookup.m index df9d8ba..938c8eb 100644 --- a/test/SemaObjC/ivar-lookup.m +++ b/test/SemaObjC/ivar-lookup.m @@ -80,3 +80,77 @@ extern struct foo x; int IVAR; // expected-error {{instance variable is already declared}} } @end + +// PR5984 +// rdar://14037151 +@interface Radar14037151 { + int myStatus; +} +- (int) test; +@end + +@implementation Radar14037151 +- (int) test +{ + myStatus = 1; // works + __typeof(myStatus) __in; // works. + union U { + __typeof(myStatus) __in; // fails. + }; + struct S { + __typeof(myStatus) __in; // fails. + struct S1 { + __typeof(myStatus) __in; // fails. + struct S { + __typeof(myStatus) __in; // fails. + }; + }; + }; + + return 0; +} +@end + +// rdar://14278560 +@class NSString, NSData, NSNumber; + +@interface NSObject +{ + Class isa; +} +@end + +@interface Foo +{ + int a; + NSString* b; + NSData* c; +} +@end + +@interface Bar : Foo +@end + +@interface Bar () { + NSString *q_strong; + NSNumber *r_strong; + int d; // expected-note {{previous definition is here}} + NSString *e_strong; // expected-note {{previous definition is here}} + NSData *f_weak; // expected-note {{previous definition is here}} + int g; // expected-note 2 {{previous definition is here}} +} +@end + +@interface Bar () { + int g; // expected-note {{previous definition is here}} \ + // expected-error {{instance variable is already declared}} +} +@end + +@implementation Bar { + int d; // expected-error {{instance variable is already declared}} + NSString *e_strong; // expected-error {{instance variable is already declared}} + NSData *f_weak; // expected-error {{instance variable is already declared}} + NSData *g; // expected-error 2 {{instance variable is already declared}} +} +@end |