]> granicus.if.org Git - clang/commitdiff
Simplify Sema::ProcessPropertyDecl. NFC
authorDouglas Gregor <dgregor@apple.com>
Tue, 3 Nov 2015 17:02:34 +0000 (17:02 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 3 Nov 2015 17:02:34 +0000 (17:02 +0000)
Now that the properties created within Objective-C class extensions go
into the extension themselves, we don't need any of the extra
complexity here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251949 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Sema/Sema.h
lib/Sema/SemaDeclObjC.cpp
lib/Sema/SemaObjCProperty.cpp

index c97d2cd7901fa1ad8e4b6d455b33daa5df4b21f9..78dfe59392ab9aaf31ab7cef149e364ebd392566 100644 (file)
@@ -7257,14 +7257,7 @@ public:
   /// Process the specified property declaration and create decls for the
   /// setters and getters as needed.
   /// \param property The property declaration being processed
-  /// \param CD The semantic container for the property
-  /// \param redeclaredProperty Declaration for property if redeclared
-  ///        in class extension.
-  /// \param lexicalDC Container for redeclaredProperty.
-  void ProcessPropertyDecl(ObjCPropertyDecl *property,
-                           ObjCContainerDecl *CD,
-                           ObjCPropertyDecl *redeclaredProperty = nullptr,
-                           ObjCContainerDecl *lexicalDC = nullptr);
+  void ProcessPropertyDecl(ObjCPropertyDecl *property);
 
 
   void DiagnosePropertyMismatch(ObjCPropertyDecl *Property,
index 2622e5ed83139647cde1318536c4074b6ff49dd7..527ffa0fece854159d8ce7de3aba6eb02762dc9d 100644 (file)
@@ -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)) {
index 1d5d8b94899456a294c01d0b7490067ac8251d6f..60067761333963d4618e8dfb966f32e0af1f9f45 100644 (file)
@@ -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,