summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenObjC/default-property-synthesis.m
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-05-14 18:35:57 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-05-14 18:35:57 +0000
commitbdb1b0d6cb9688b70491265566f76c1e401fa376 (patch)
tree2bbf5708f58c7a1d7d5ffa8ee06da1500bc493bc /clang/test/CodeGenObjC/default-property-synthesis.m
parente6e847079ce3b483892068ee6a2732dee7a6c660 (diff)
downloadbcm5719-llvm-bdb1b0d6cb9688b70491265566f76c1e401fa376.tar.gz
bcm5719-llvm-bdb1b0d6cb9688b70491265566f76c1e401fa376.zip
Implement new default property synthesis rules. Essentially, no longer
user directive is needed to force a property implementation. It is decided based on those propeties which are declared in the class (or in its protocols) but not those which must be default implemented by one of its super classes. Implements radar 7923851. llvm-svn: 103787
Diffstat (limited to 'clang/test/CodeGenObjC/default-property-synthesis.m')
-rw-r--r--clang/test/CodeGenObjC/default-property-synthesis.m38
1 files changed, 38 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjC/default-property-synthesis.m b/clang/test/CodeGenObjC/default-property-synthesis.m
new file mode 100644
index 00000000000..b3eeb22004a
--- /dev/null
+++ b/clang/test/CodeGenObjC/default-property-synthesis.m
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi2 -emit-llvm -o %t %s
+// rdar://7923851.
+
+// Superclass declares property. Subclass redeclares the same property.
+// Do not @synthesize-by-default in the subclass. P1
+// Superclass declares a property. Subclass declares a different property with the same name
+// (such as different type or attributes). Do not @synthesize-by-default in the subclass. P2
+// Superclass conforms to a protocol that declares a property. Subclass redeclares the
+// same property. Do not @synthesize-by-default in the subclass. P3
+// Superclass conforms to a protocol that declares a property. Subclass conforms to the
+// same protocol or a derived protocol. Do not @synthesize-by-default in the subclass. P4
+
+
+@protocol PROTO
+ @property int P3;
+ @property int P4;
+@end
+
+@protocol PROTO1 <PROTO>
+ @property int IMP1;
+@end
+
+@interface Super <PROTO>
+ @property int P1;
+ @property (copy) id P2;
+@end
+
+@interface Sub : Super <PROTO1>
+ @property int P1;
+ @property (nonatomic, retain) id P2; // expected-warning {{property 'P2' 'copy' attribute does not match the property inherited from 'Super'}} \
+ // expected-warning {{property 'P2' 'atomic' attribute does not match the property inherited from 'Super'}}
+ @property int P3;
+ @property int IMP2;
+@end
+
+@implementation Sub
+@end
+
OpenPOWER on IntegriCloud