diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaObjCProperty.cpp | 27 |
2 files changed, 7 insertions, 22 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 2622e5ed831..527ffa0fece 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -3637,7 +3637,7 @@ Decl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd, ArrayRef<Decl *> allMethods, // user-defined setter/getter. It also synthesizes setter/getter methods // and adds them to the DeclContext and global method pools. for (auto *I : CDecl->properties()) - ProcessPropertyDecl(I, CDecl); + ProcessPropertyDecl(I); CDecl->setAtEndRange(AtEnd); } if (ObjCImplementationDecl *IC=dyn_cast<ObjCImplementationDecl>(ClassDecl)) { diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index 1d5d8b94899..60067761333 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -390,9 +390,7 @@ Sema::HandlePropertyInClassExtension(Scope *S, // If there was no declaration of a property with the same name in // the primary class, we're done. if (!PIDecl) { - ProcessPropertyDecl(PDecl, CDecl, - /* redeclaredProperty = */ nullptr, - /* lexicalDC = */ CDecl); + ProcessPropertyDecl(PDecl); return PDecl; } @@ -483,8 +481,8 @@ Sema::HandlePropertyInClassExtension(Scope *S, *isOverridingProperty = true; - // Make sure setter decl is synthesized, and added to continuation class's list. - ProcessPropertyDecl(PDecl, CDecl, PIDecl, CDecl); + // Make sure getter/setter are appropriately synthesized. + ProcessPropertyDecl(PDecl); return PDecl; } @@ -1973,15 +1971,10 @@ static void AddPropertyAttrs(Sema &S, ObjCMethodDecl *PropertyMethod, /// ProcessPropertyDecl - Make sure that any user-defined setter/getter methods /// have the property type and issue diagnostics if they don't. /// Also synthesize a getter/setter method if none exist (and update the -/// appropriate lookup tables. FIXME: Should reconsider if adding synthesized -/// methods is the "right" thing to do. -void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property, - ObjCContainerDecl *CD, - ObjCPropertyDecl *redeclaredProperty, - ObjCContainerDecl *lexicalDC) { - +/// appropriate lookup tables. +void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property) { ObjCMethodDecl *GetterMethod, *SetterMethod; - + ObjCContainerDecl *CD = cast<ObjCContainerDecl>(property->getDeclContext()); if (CD->isInvalidDecl()) return; @@ -2060,10 +2053,6 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property, AddPropertyAttrs(*this, GetterMethod, property); - // FIXME: Eventually this shouldn't be needed, as the lexical context - // and the real context should be the same. - if (lexicalDC) - GetterMethod->setLexicalDeclContext(lexicalDC); if (property->hasAttr<NSReturnsNotRetainedAttr>()) GetterMethod->addAttr(NSReturnsNotRetainedAttr::CreateImplicit(Context, Loc)); @@ -2134,10 +2123,6 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property, AddPropertyAttrs(*this, SetterMethod, property); CD->addDecl(SetterMethod); - // FIXME: Eventually this shouldn't be needed, as the lexical context - // and the real context should be the same. - if (lexicalDC) - SetterMethod->setLexicalDeclContext(lexicalDC); if (const SectionAttr *SA = property->getAttr<SectionAttr>()) SetterMethod->addAttr( SectionAttr::CreateImplicit(Context, SectionAttr::GNU_section, |