summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-07-15 15:30:21 +0000
committerDouglas Gregor <dgregor@apple.com>2011-07-15 15:30:21 +0000
commit397745e5406b0b6aefeddc43c71c1cc8e937bf5d (patch)
treeeed2d7b743eb0c816db626fa7f21a0092a0168e0
parent8ebf07a3decd1f0a380cbec1debd459d6ac95a40 (diff)
downloadbcm5719-llvm-397745e5406b0b6aefeddc43c71c1cc8e937bf5d.tar.gz
bcm5719-llvm-397745e5406b0b6aefeddc43c71c1cc8e937bf5d.zip
When creating a property in a class extension, make sure to check its
attributes. Fixes <rdar://problem/9561076>. llvm-svn: 135273
-rw-r--r--clang/lib/Sema/SemaObjCProperty.cpp1
-rw-r--r--clang/test/Index/c-index-api-loadTU-test.m11
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp
index 842d6142946..d826ea8d84a 100644
--- a/clang/lib/Sema/SemaObjCProperty.cpp
+++ b/clang/lib/Sema/SemaObjCProperty.cpp
@@ -179,6 +179,7 @@ Sema::HandlePropertyInClassExtension(Scope *S, ObjCCategoryDecl *CDecl,
// Set setter/getter selector name. Needed later.
PDecl->setGetterName(GetterSel);
PDecl->setSetterName(SetterSel);
+ ProcessDeclAttributes(S, PDecl, FD.D);
DC->addDecl(PDecl);
// We need to look in the @interface to see if the @property was
diff --git a/clang/test/Index/c-index-api-loadTU-test.m b/clang/test/Index/c-index-api-loadTU-test.m
index 98a41d837fd..ab5f9a9ed6f 100644
--- a/clang/test/Index/c-index-api-loadTU-test.m
+++ b/clang/test/Index/c-index-api-loadTU-test.m
@@ -70,6 +70,11 @@ typedef struct X0 X1;
struct X0;
struct X0 {};
+@interface TestAttributes()
+// <rdar://problem/9561076>
+@property (retain) IBOutlet id anotherOutlet;
+@end
+
// CHECK: c-index-api-loadTU-test.m:4:12: ObjCInterfaceDecl=Foo:4:12 Extent=[4:1 - 12:5]
// CHECK: c-index-api-loadTU-test.m:6:32: ObjCIvarDecl=myoutlet:6:32 (Definition) Extent=[6:3 - 6:40]
// CHECK: <invalid loc>:0:0: attribute(iboutlet)=
@@ -150,3 +155,9 @@ struct X0 {};
// CHECK: c-index-api-loadTU-test.m:70:8: StructDecl=X0:70:8 Extent=[70:1 - 70:10]
// CHECK: c-index-api-loadTU-test.m:71:8: StructDecl=X0:71:8 (Definition) Extent=[71:1 - 71:14]
+// CHECK: <invalid loc>:0:0: attribute(iboutlet)=
+// CHECK: c-index-api-loadTU-test.m:75:29: TypeRef=id:0:0 Extent=[75:29 - 75:31]
+// CHECK: c-index-api-loadTU-test.m:75:32: ObjCInstanceMethodDecl=anotherOutlet:75:32 Extent=[75:32 - 75:45]
+// CHECK: c-index-api-loadTU-test.m:75:32: ObjCInstanceMethodDecl=setAnotherOutlet::75:32 Extent=[75:32 - 75:45]
+// CHECK: c-index-api-loadTU-test.m:75:32: ParmDecl=anotherOutlet:75:32 (Definition) Extent=[75:32 - 75:45]
+
OpenPOWER on IntegriCloud