summaryrefslogtreecommitdiffstats
path: root/clang/test/ASTMerge
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-12-07 18:32:03 +0000
committerDouglas Gregor <dgregor@apple.com>2010-12-07 18:32:03 +0000
commit14a49e2fbe1c2d8eafca6cf3a28458c6d8561372 (patch)
tree608dc459e3378fdd85ee297fb2896d5b638af661 /clang/test/ASTMerge
parent2a43368a03d807676eb4318fa0e8ccfb7ed885b8 (diff)
downloadbcm5719-llvm-14a49e2fbe1c2d8eafca6cf3a28458c6d8561372.tar.gz
bcm5719-llvm-14a49e2fbe1c2d8eafca6cf3a28458c6d8561372.zip
Implement AST import for Objective-C property implementations
(@synthesize and @dynamic). llvm-svn: 121159
Diffstat (limited to 'clang/test/ASTMerge')
-rw-r--r--clang/test/ASTMerge/Inputs/property1.m19
-rw-r--r--clang/test/ASTMerge/Inputs/property2.m20
-rw-r--r--clang/test/ASTMerge/property.m6
3 files changed, 44 insertions, 1 deletions
diff --git a/clang/test/ASTMerge/Inputs/property1.m b/clang/test/ASTMerge/Inputs/property1.m
index 37887a34f76..22fe0a02220 100644
--- a/clang/test/ASTMerge/Inputs/property1.m
+++ b/clang/test/ASTMerge/Inputs/property1.m
@@ -10,3 +10,22 @@
@property (readonly) float Prop1;
@end
+// Properties with implementations
+@interface I3 {
+ int ivar1;
+ int ivar2;
+ int ivar3;
+ int Prop4;
+}
+@property int Prop1;
+@property int Prop2;
+@property int Prop3;
+@property int Prop4;
+@end
+
+@implementation I3
+@synthesize Prop1 = ivar1;
+@synthesize Prop2 = ivar3;
+@dynamic Prop3;
+@synthesize Prop4;
+@end
diff --git a/clang/test/ASTMerge/Inputs/property2.m b/clang/test/ASTMerge/Inputs/property2.m
index 6039f10ec6e..64a03fb04ec 100644
--- a/clang/test/ASTMerge/Inputs/property2.m
+++ b/clang/test/ASTMerge/Inputs/property2.m
@@ -11,3 +11,23 @@
@interface I2
@property (readonly) int Prop1;
@end
+
+// Properties with implementations
+@interface I3 {
+ int ivar1;
+ int ivar2;
+ int ivar3;
+ int Prop4;
+}
+@property int Prop1;
+@property int Prop2;
+@property int Prop3;
+@property int Prop4;
+@end
+
+@implementation I3
+@synthesize Prop2 = ivar2;
+@synthesize Prop1 = ivar1;
+@synthesize Prop3 = ivar3;
+@synthesize Prop4 = Prop4;
+@end
diff --git a/clang/test/ASTMerge/property.m b/clang/test/ASTMerge/property.m
index 5f7a7308da6..a8dd7c420c8 100644
--- a/clang/test/ASTMerge/property.m
+++ b/clang/test/ASTMerge/property.m
@@ -6,4 +6,8 @@
// CHECK: property1.m:10:28: note: declared here with type 'float'
// CHECK: property2.m:12:26: error: instance method 'Prop1' has incompatible result types in different translation units ('int' vs. 'float')
// CHECK: property1.m:10:28: note: instance method 'Prop1' also declared here
-// CHECK: 2 errors generated.
+// CHECK: property1.m:28:21: error: property 'Prop2' is synthesized to different ivars in different translation units ('ivar3' vs. 'ivar2')
+// CHECK: property2.m:29:21: note: property is synthesized to ivar 'ivar2' here
+// CHECK: property1.m:29:10: error: property 'Prop3' is implemented with @dynamic in one translation but @synthesize in another translation unit
+// CHECK: property2.m:31:13: note: property 'Prop3' is implemented with @synthesize here
+// CHECK: 4 errors generated.
OpenPOWER on IntegriCloud