From cba5849c0b5c9ae98a2f70d15ef541ef51014b14 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Thu, 23 Sep 2010 21:18:05 +0000 Subject: For properties declared in a @protocol and redeclared in a class extension, use the class extension as the lexical DeclContext for the @property declaration that gets auto-created for the @interface. Fixes: llvm-svn: 114693 --- clang/lib/Sema/SemaObjCProperty.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'clang/lib/Sema/SemaObjCProperty.cpp') diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index ba71b4ca4df..2ba39dc3cd1 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -31,7 +31,8 @@ Decl *Sema::ActOnProperty(Scope *S, SourceLocation AtLoc, Selector SetterSel, Decl *ClassCategory, bool *isOverridingProperty, - tok::ObjCKeywordKind MethodImplKind) { + tok::ObjCKeywordKind MethodImplKind, + DeclContext *lexicalDC) { unsigned Attributes = ODS.getPropertyAttributes(); bool isReadWrite = ((Attributes & ObjCDeclSpec::DQ_PR_readwrite) || // default is readwrite! @@ -70,6 +71,9 @@ Decl *Sema::ActOnProperty(Scope *S, SourceLocation AtLoc, GetterSel, SetterSel, isAssign, isReadWrite, Attributes, TSI, MethodImplKind); + if (lexicalDC) + Res->setLexicalDeclContext(lexicalDC); + // Validate the attributes on the @property. CheckObjCPropertyAttributes(Res, AtLoc, Attributes); return Res; @@ -172,7 +176,8 @@ Sema::HandlePropertyInClassExtension(Scope *S, ObjCCategoryDecl *CDecl, PIDecl->getGetterName(), PIDecl->getSetterName(), CCPrimary, isOverridingProperty, - MethodImplKind); + MethodImplKind, + /* lexicalDC = */ CDecl); PIDecl = cast(ProtocolPtrTy); } PIDecl->makeitReadWriteAttribute(); -- cgit v1.2.3