diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-07-15 15:30:21 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-07-15 15:30:21 +0000 |
commit | 397745e5406b0b6aefeddc43c71c1cc8e937bf5d (patch) | |
tree | eed2d7b743eb0c816db626fa7f21a0092a0168e0 | |
parent | 8ebf07a3decd1f0a380cbec1debd459d6ac95a40 (diff) | |
download | bcm5719-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.cpp | 1 | ||||
-rw-r--r-- | clang/test/Index/c-index-api-loadTU-test.m | 11 |
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] + |