]> granicus.if.org Git - clang/commitdiff
Cleanup DeclContext::addDecl and DeclContext::insert interface, from Piotr Rak
authorDouglas Gregor <dgregor@apple.com>
Mon, 12 Jan 2009 23:27:07 +0000 (23:27 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 12 Jan 2009 23:27:07 +0000 (23:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62122 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/RewriteObjC.cpp
include/clang/AST/DeclBase.h
lib/AST/ASTContext.cpp
lib/AST/DeclBase.cpp
lib/CodeGen/CGObjCMac.cpp
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaDeclObjC.cpp
lib/Sema/SemaExprCXX.cpp

index cc66a2c267d90e3cb296c352087fe484709ee42a..ec0018a11cbb91e971ecc432f57c6fe9cc8a3317 100644 (file)
@@ -2172,12 +2172,10 @@ QualType RewriteObjC::getSuperStructType() {
 
     // Create fields
     for (unsigned i = 0; i < 2; ++i) {
-      SuperStructDecl->addDecl(*Context, 
-                               FieldDecl::Create(*Context, SuperStructDecl, 
+      SuperStructDecl->addDecl(FieldDecl::Create(*Context, SuperStructDecl, 
                                                  SourceLocation(), 0, 
                                                  FieldTypes[i], /*BitWidth=*/0,
-                                                 /*Mutable=*/false, 0),
-                               true);
+                                                 /*Mutable=*/false, 0));
     }
   
     SuperStructDecl->completeDefinition(*Context);
@@ -2203,14 +2201,12 @@ QualType RewriteObjC::getConstantStringStructType() {
 
     // Create fields
     for (unsigned i = 0; i < 4; ++i) {
-      ConstantStringDecl->addDecl(*Context, 
-                                  FieldDecl::Create(*Context, 
+      ConstantStringDecl->addDecl(FieldDecl::Create(*Context, 
                                                     ConstantStringDecl, 
                                                     SourceLocation(), 0,
                                                     FieldTypes[i], 
                                                     /*BitWidth=*/0,
-                                                    /*Mutable=*/true, 0),
-                                  true);
+                                                    /*Mutable=*/true, 0));
     }
 
     ConstantStringDecl->completeDefinition(*Context);
index f96909bb912c1cd1b2cf29123298133e6cc9fa2a..b506436e26f289d39cae2c6ea995ddefb7b9a2c6 100644 (file)
@@ -610,12 +610,9 @@ public:
     }
   };
 
-  /// addDecl - Add the declaration D to this scope. Note that
-  /// declarations are added at the beginning of the declaration
-  /// chain, so reverseDeclChain() should be called after all
-  /// declarations have been added. If AllowLookup, also adds this
-  /// declaration into data structure for name lookup.
-  void addDecl(ASTContext &Context, ScopedDecl *D, bool AllowLookup = true);
+  /// addDecl - Add the declaration D to this scope, and into data structure
+  /// for name lookup. 
+  void addDecl(ScopedDecl *D);
 
   void buildLookup(DeclContext *DCtx);
 
@@ -652,7 +649,7 @@ public:
   /// that this replacement is semantically correct, e.g., that
   /// declarations are only replaced by later declarations of the same
   /// entity and not a declaration of some other kind of entity.
-  void insert(ASTContext &Context, ScopedDecl *D);
+  void insert(ScopedDecl *D);
 
   static bool classof(const Decl *D) {
     switch (D->getKind()) {
index 988fa1a5c3a36f9c1938ecdf8456f48850882b6f..24172a5ddbda8666316658d9e7791595bdff2b73 100644 (file)
@@ -533,7 +533,7 @@ const RecordDecl *ASTContext::addRecordToClass(const ObjCInterfaceDecl *D)
                                           RecFields[i]->getIdentifier(),
                                           RecFields[i]->getType(), 
                                           RecFields[i]->getBitWidth(), false, 0);
-    NewRD->addDecl(*this, Field);
+    NewRD->addDecl(Field);
   }
   NewRD->completeDefinition(*this);
   RD = NewRD;
@@ -1554,7 +1554,7 @@ QualType ASTContext::getCFConstantStringType() {
                                            SourceLocation(), 0,
                                            FieldTypes[i], /*BitWidth=*/0, 
                                            /*Mutable=*/false, /*PrevDecl=*/0);
-      CFConstantStringTypeDecl->addDecl(*this, Field, true);
+      CFConstantStringTypeDecl->addDecl(Field);
     }
 
     CFConstantStringTypeDecl->completeDefinition(*this);
@@ -1584,7 +1584,7 @@ QualType ASTContext::getObjCFastEnumerationStateType()
                                            SourceLocation(), 0, 
                                            FieldTypes[i], /*BitWidth=*/0, 
                                            /*Mutable=*/false, /*PrevDecl=*/0);
-      ObjCFastEnumerationStateTypeDecl->addDecl(*this, Field, true);
+      ObjCFastEnumerationStateTypeDecl->addDecl(Field);
     }
     
     ObjCFastEnumerationStateTypeDecl->completeDefinition(*this);
index cafe5358d618616d3920f52f265af5ecda410bca..8eb52b722d4e96191a78c68db3c24b7caa27eff5 100644 (file)
@@ -514,7 +514,7 @@ DeclContext *DeclContext::getNextContext() {
   }
 }
 
-void DeclContext::addDecl(ASTContext &Context, ScopedDecl *D, bool AllowLookup) {
+void DeclContext::addDecl(ScopedDecl *D) {
   assert(D->getLexicalDeclContext() == this && "Decl inserted into wrong lexical context");
   assert(!D->NextDeclInScope && D != LastDecl && 
          "Decl already inserted into a DeclContext");
@@ -525,8 +525,7 @@ void DeclContext::addDecl(ASTContext &Context, ScopedDecl *D, bool AllowLookup)
   } else {
     FirstDecl = LastDecl = D;
   }
-  if (AllowLookup)
-    D->getDeclContext()->insert(Context, D);
+  D->getDeclContext()->insert(D);
 }
 
 /// buildLookup - Build the lookup data structure with all of the
@@ -596,10 +595,10 @@ const DeclContext *DeclContext::getLookupContext() const {
   return Ctx;
 }
 
-void DeclContext::insert(ASTContext &Context, ScopedDecl *D) {
+void DeclContext::insert(ScopedDecl *D) {
   DeclContext *PrimaryContext = getPrimaryContext();
   if (PrimaryContext != this) {
-    PrimaryContext->insert(Context, D);
+    PrimaryContext->insert(D);
     return;
   }
 
@@ -612,7 +611,7 @@ void DeclContext::insert(ASTContext &Context, ScopedDecl *D) {
   // If we are a transparent context, insert into our parent context,
   // too. This operation is recursive.
   if (isTransparentContext())
-    getParent()->insert(Context, D);
+    getParent()->insert(D);
 }
 
 void DeclContext::insertImpl(ScopedDecl *D) {
index c587ab823039d95f14a82bbcd85eaa24610bbdad..0a8aa45b2d71a30ec5fde213b190fe73d7bd5477 100644 (file)
@@ -2376,14 +2376,10 @@ ObjCTypesHelper::ObjCTypesHelper(CodeGen::CodeGenModule &cgm)
   RecordDecl *RD = RecordDecl::Create(Ctx, TagDecl::TK_struct, 0,
                                       SourceLocation(),
                                       &Ctx.Idents.get("_objc_super"));  
-  RD->addDecl(Ctx, 
-              FieldDecl::Create(Ctx, RD, SourceLocation(), 0, 
-                                Ctx.getObjCIdType(), 0, false, 0), 
-              true);
-  RD->addDecl(Ctx, 
-              FieldDecl::Create(Ctx, RD, SourceLocation(), 0,
-                                Ctx.getObjCClassType(), 0, false, 0), 
-              true);
+  RD->addDecl(FieldDecl::Create(Ctx, RD, SourceLocation(), 0, 
+                                Ctx.getObjCIdType(), 0, false, 0));
+  RD->addDecl(FieldDecl::Create(Ctx, RD, SourceLocation(), 0,
+                                Ctx.getObjCClassType(), 0, false, 0));
   RD->completeDefinition(Ctx);
 
   SuperCTy = Ctx.getTagDeclType(RD);
index 6aeda8bc0b5e25e6c6a6015369c11b03afcf1ea3..9b419e5b63c81a3f6e91dff1c9c6d289ed94de89 100644 (file)
@@ -106,7 +106,7 @@ void Sema::PushOnScopeChains(NamedDecl *D, Scope *S) {
   // found later. Declarations without a context won't be inserted
   // into any context.
   if (ScopedDecl *SD = dyn_cast<ScopedDecl>(D))
-    CurContext->addDecl(Context, SD);
+    CurContext->addDecl(SD);
 
   // C++ [basic.scope]p4:
   //   -- exactly one declaration shall declare a class name or
@@ -931,7 +931,7 @@ bool Sema::InjectAnonymousStructOrUnionMembers(Scope *S, DeclContext *Owner,
         //   definition, the members of the anonymous union are
         //   considered to have been defined in the scope in which the
         //   anonymous union is declared.
-        Owner->insert(Context, *F);
+        Owner->insert(*F);
         S->AddDecl(*F);
         IdResolver.AddDecl(*F);
       }
@@ -1090,7 +1090,7 @@ Sema::DeclTy *Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS,
   // Add the anonymous struct/union object to the current
   // context. We'll be referencing this object when we refer to one of
   // its members.
-  Owner->addDecl(Context, Anon);
+  Owner->addDecl(Anon);
 
   // Inject the members of the anonymous struct/union into the owning
   // context and into the identifier resolver chain for name lookup
@@ -3126,7 +3126,7 @@ CreateNewDecl:
     } else 
       PushOnScopeChains(New, S);
   } else {
-    LexicalContext->addDecl(Context, New);
+    LexicalContext->addDecl(New);
   }
 
   return New;
@@ -3296,7 +3296,7 @@ Sema::DeclTy *Sema::ActOnField(Scope *S, DeclTy *TagD,
   if (II) {
     PushOnScopeChains(NewFD, S);
   } else
-    Record->addDecl(Context, NewFD);
+    Record->addDecl(NewFD);
 
   return NewFD;
 }
index dcd378936a1434e15616fd027ab8172846519663..d7cef91f3399180993d84989651a065d4bc40985 100644 (file)
@@ -797,7 +797,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
                                  /*isImplicitlyDeclared=*/true);
     DefaultCon->setAccess(AS_public);
     DefaultCon->setImplicit();
-    ClassDecl->addDecl(Context, DefaultCon);
+    ClassDecl->addDecl(DefaultCon);
 
     // Notify the class that we've added a constructor.
     ClassDecl->addedConstructor(Context, DefaultCon);
@@ -878,7 +878,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
     CopyConstructor->setParams(&FromParam, 1);
 
     ClassDecl->addedConstructor(Context, CopyConstructor);
-    ClassDecl->addDecl(Context, CopyConstructor);
+    ClassDecl->addDecl(CopyConstructor);
   }
 
   if (!ClassDecl->hasUserDeclaredCopyAssignment()) {
@@ -956,7 +956,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
 
     // Don't call addedAssignmentOperator. There is no way to distinguish an
     // implicit from an explicit assignment operator.
-    ClassDecl->addDecl(Context, CopyAssignment);
+    ClassDecl->addDecl(CopyAssignment);
   }
 
   if (!ClassDecl->hasUserDeclaredDestructor()) {
@@ -975,7 +975,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
                                   /*isImplicitlyDeclared=*/true);
     Destructor->setAccess(AS_public);
     Destructor->setImplicit();
-    ClassDecl->addDecl(Context, Destructor);
+    ClassDecl->addDecl(Destructor);
   }
 }
 
@@ -2123,7 +2123,7 @@ Sema::DeclTy *Sema::ActOnStartLinkageSpecification(Scope *S,
   LinkageSpecDecl *D = LinkageSpecDecl::Create(Context, CurContext,
                                                LangLoc, Language, 
                                                LBraceLoc.isValid());
-  CurContext->addDecl(Context, D);
+  CurContext->addDecl(D);
   PushDeclContext(S, D);
   return D;
 }
index afcf45622b917c916776adfc229ea45273557ebd..f6a245a3172cb9e552041fc340246f5a193312e8 100644 (file)
@@ -100,7 +100,7 @@ ActOnStartClassInterface(SourceLocation AtInterfaceLoc,
   
     ObjCInterfaceDecls[ClassName] = IDecl;
     // FIXME: PushOnScopeChains
-    CurContext->addDecl(Context, IDecl);
+    CurContext->addDecl(IDecl);
     // Remember that this needs to be removed when the scope is popped.
     TUScope->AddDecl(IDecl);
   }
@@ -185,7 +185,7 @@ Sema::DeclTy *Sema::ActOnCompatiblityAlias(SourceLocation AtLoc,
   ObjCAliasDecls[AliasName] = AliasDecl;
 
   // FIXME: PushOnScopeChains?
-  CurContext->addDecl(Context, AliasDecl);
+  CurContext->addDecl(AliasDecl);
   if (!CheckObjCDeclScope(AliasDecl))
     TUScope->AddDecl(AliasDecl);
 
@@ -219,7 +219,7 @@ Sema::ActOnStartProtocolInterface(SourceLocation AtProtoInterfaceLoc,
     PDecl = ObjCProtocolDecl::Create(Context, CurContext, 
                                      AtProtoInterfaceLoc,ProtocolName);
     // FIXME: PushOnScopeChains?
-    CurContext->addDecl(Context, PDecl);
+    CurContext->addDecl(PDecl);
     PDecl->setForwardDecl(false);
     ObjCProtocols[ProtocolName] = PDecl;
   }
@@ -444,7 +444,7 @@ Sema::ActOnForwardProtocolDeclaration(SourceLocation AtProtocolLoc,
       PDecl = ObjCProtocolDecl::Create(Context, CurContext, 
                                        IdentList[i].second, Ident);
       // FIXME: PushOnScopeChains?
-      CurContext->addDecl(Context, PDecl);
+      CurContext->addDecl(PDecl);
     }
     if (attrList)
       ProcessDeclAttributeList(PDecl, attrList);
@@ -454,7 +454,7 @@ Sema::ActOnForwardProtocolDeclaration(SourceLocation AtProtocolLoc,
   ObjCForwardProtocolDecl *PDecl = 
     ObjCForwardProtocolDecl::Create(Context, CurContext, AtProtocolLoc,
                                     &Protocols[0], Protocols.size());
-  CurContext->addDecl(Context, PDecl);
+  CurContext->addDecl(PDecl);
   CheckObjCDeclScope(PDecl);
   return PDecl;
 }
@@ -472,7 +472,7 @@ ActOnStartCategoryInterface(SourceLocation AtInterfaceLoc,
   ObjCCategoryDecl *CDecl = 
     ObjCCategoryDecl::Create(Context, CurContext, AtInterfaceLoc, CategoryName);
   // FIXME: PushOnScopeChains?
-  CurContext->addDecl(Context, CDecl);
+  CurContext->addDecl(CDecl);
   CDecl->setClassInterface(IDecl);
   
   /// Check that class of this category is already completely declared.
@@ -519,7 +519,7 @@ Sema::DeclTy *Sema::ActOnStartCategoryImplementation(
     Diag(ClassLoc, diag::err_undef_interface) << ClassName;
 
   // FIXME: PushOnScopeChains?
-  CurContext->addDecl(Context, CDecl);
+  CurContext->addDecl(CDecl);
 
   /// TODO: Check that CatName, category name, is not used in another
   // implementation.
@@ -585,7 +585,7 @@ Sema::DeclTy *Sema::ActOnStartClassImplementation(
     IDecl->setLocEnd(ClassLoc);
     
     // FIXME: PushOnScopeChains?
-    CurContext->addDecl(Context, IDecl);
+    CurContext->addDecl(IDecl);
     // Remember that this needs to be removed when the scope is popped.
     TUScope->AddDecl(IDecl);
   }
@@ -595,7 +595,7 @@ Sema::DeclTy *Sema::ActOnStartClassImplementation(
                                    ClassName, IDecl, SDecl);
   
   // FIXME: PushOnScopeChains?
-  CurContext->addDecl(Context, IMPDecl);
+  CurContext->addDecl(IMPDecl);
 
   if (CheckObjCDeclScope(IMPDecl))
     return IMPDecl;
@@ -938,7 +938,7 @@ Sema::ActOnForwardClassDeclaration(SourceLocation AtClassLoc,
       ObjCInterfaceDecls[IdentList[i]] = IDecl;
 
       // FIXME: PushOnScopeChains?
-      CurContext->addDecl(Context, IDecl);
+      CurContext->addDecl(IDecl);
       // Remember that this needs to be removed when the scope is popped.
       TUScope->AddDecl(IDecl);
     }
@@ -949,7 +949,7 @@ Sema::ActOnForwardClassDeclaration(SourceLocation AtClassLoc,
   ObjCClassDecl *CDecl = ObjCClassDecl::Create(Context, CurContext, AtClassLoc,
                                                &Interfaces[0],
                                                Interfaces.size());
-  CurContext->addDecl(Context, CDecl);
+  CurContext->addDecl(CDecl);
   CheckObjCDeclScope(CDecl);
   return CDecl;  
 }
@@ -1114,7 +1114,7 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property,
                               ObjCPropertyDecl::Optional) ? 
                              ObjCMethodDecl::Optional : 
                              ObjCMethodDecl::Required);
-    CD->addDecl(Context, GetterMethod);
+    CD->addDecl(GetterMethod);
   } else
     // A user declared getter will be synthesize when @synthesize of
     // the property with the same name is seen in the @implementation
@@ -1145,7 +1145,7 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property,
                                                   VarDecl::None,
                                                   0, 0);
       SetterMethod->setMethodParams(&Argument, 1);
-      CD->addDecl(Context, SetterMethod);
+      CD->addDecl(SetterMethod);
     } else
       // A user declared setter will be synthesize when @synthesize of
       // the property with the same name is seen in the @implementation
@@ -1210,7 +1210,7 @@ void Sema::ActOnAtEnd(SourceLocation AtEndLoc, DeclTy *classDecl,
             << Method->getDeclName();
           Diag(PrevMethod->getLocation(), diag::note_previous_declaration);
       } else {
-        DC->addDecl(Context, Method);
+        DC->addDecl(Method);
         InsMap[Method->getSelector()] = Method;
         /// The following allows us to typecheck messages to "id".
         AddInstanceMethodToGlobalPool(Method);
@@ -1227,7 +1227,7 @@ void Sema::ActOnAtEnd(SourceLocation AtEndLoc, DeclTy *classDecl,
           << Method->getDeclName();
         Diag(PrevMethod->getLocation(), diag::note_previous_declaration);
       } else {
-        DC->addDecl(Context, Method);
+        DC->addDecl(Method);
         ClsMap[Method->getSelector()] = Method;
         /// The following allows us to typecheck messages to "Class".
         AddFactoryMethodToGlobalPool(Method);
@@ -1567,7 +1567,7 @@ Sema::DeclTy *Sema::ActOnProperty(Scope *S, SourceLocation AtLoc,
   assert(DC && "ClassDecl is not a DeclContext");
   ObjCPropertyDecl *PDecl = ObjCPropertyDecl::Create(Context, DC, AtLoc, 
                                                      FD.D.getIdentifier(), T);
-  DC->addDecl(Context, PDecl);
+  DC->addDecl(PDecl);
 
   // Regardless of setter/getter attribute, we save the default getter/setter
   // selector names in anticipation of declaration of setter/getter methods.
@@ -1707,7 +1707,7 @@ Sema::DeclTy *Sema::ActOnPropertyImplDecl(SourceLocation AtLoc,
                                   ObjCPropertyImplDecl::Synthesize 
                                   : ObjCPropertyImplDecl::Dynamic),
                                  Ivar);
-  CurContext->addDecl(Context, PIDecl);
+  CurContext->addDecl(PIDecl);
   if (IC) {
     if (Synthesize)
       if (ObjCPropertyImplDecl *PPIDecl = 
@@ -1801,7 +1801,7 @@ void Sema::ActOnDefs(Scope *S, DeclTy *TagD, SourceLocation DeclStart,
     if (getLangOptions().CPlusPlus)
       PushOnScopeChains(cast<FieldDecl>(FD), S);
     else if (RecordDecl *Record = dyn_cast<RecordDecl>((Decl*)TagD))
-      Record->addDecl(Context, FD);
+      Record->addDecl(FD);
   }
 }
 
index 111dca4ae02bd6f0ed37051a57d1f17295ae5bf0..99e00a7a82a4421c70b068a044139990bcdaaa6c 100644 (file)
@@ -540,7 +540,7 @@ void Sema::DeclareGlobalAllocationFunction(DeclarationName Name,
   // FIXME: Also add this declaration to the IdentifierResolver, but
   // make sure it is at the end of the chain to coincide with the
   // global scope.
-  ((DeclContext *)TUScope->getEntity())->addDecl(Context, Alloc);
+  ((DeclContext *)TUScope->getEntity())->addDecl(Alloc);
 }
 
 /// ActOnCXXDelete - Parsed a C++ 'delete' expression (C++ 5.3.5), as in: