diff options
-rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 3 | ||||
-rw-r--r-- | clang/test/SemaObjCXX/linkage-spec.mm | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 7a9d6d50729..03081bec138 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -540,6 +540,9 @@ Sema::ActOnStartProtocolInterface(SourceLocation AtProtoInterfaceLoc, // Make sure the cached decl gets a valid start location. PDecl->setLocation(AtProtoInterfaceLoc); PDecl->setForwardDecl(false); + // Since this ObjCProtocolDecl was created by a forward declaration, + // we now add it to the DeclContext since it wasn't added before + PDecl->setLexicalDeclContext(CurContext); CurContext->addDecl(PDecl); // Repeat in dependent AST files. PDecl->setChangedSinceDeserialization(true); diff --git a/clang/test/SemaObjCXX/linkage-spec.mm b/clang/test/SemaObjCXX/linkage-spec.mm index 1454e6a6782..584571de963 100644 --- a/clang/test/SemaObjCXX/linkage-spec.mm +++ b/clang/test/SemaObjCXX/linkage-spec.mm @@ -10,3 +10,12 @@ extern "C" { @interface I @end + +// rdar://10015110 +@protocol VKAnnotation; +extern "C" { + +@protocol VKAnnotation + @property (nonatomic, assign) id coordinate; +@end +} |