summaryrefslogtreecommitdiffstats
path: root/test/SemaObjC/ivar-lookup.m
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaObjC/ivar-lookup.m')
-rw-r--r--test/SemaObjC/ivar-lookup.m74
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
OpenPOWER on IntegriCloud