From: Douglas Gregor Date: Fri, 24 Apr 2009 00:16:12 +0000 (+0000) Subject: Eliminate Sema::ObjCInterfaceDecls X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b9fb3082bc54cf7ffe6c3772500a73388f53072;p=clang Eliminate Sema::ObjCInterfaceDecls git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69942 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index b5f4e0bc9e..d87d93105d 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -172,13 +172,6 @@ public: /// we can check for duplicates and find local method declarations. llvm::SmallVector ObjCCategoryImpls; - /// ObjCInterfaceDecls - Keep track of all class declarations declared - /// with @interface, so that we can emit errors on duplicates and - /// find the declarations when needed. - typedef llvm::DenseMap ObjCInterfaceDeclsTy; - ObjCInterfaceDeclsTy ObjCInterfaceDecls; - /// ObjCAliasDecls - Keep track of all class declarations declared /// with @compatibility_alias, so that we can emit errors on duplicates and /// find the declarations when needed. This construct is ancient and will diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index e0cbdce7e0..029770d3a9 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -98,10 +98,7 @@ ActOnStartClassInterface(SourceLocation AtInterfaceLoc, if (AttrList) ProcessDeclAttributeList(IDecl, AttrList); - ObjCInterfaceDecls[ClassName] = IDecl; PushOnScopeChains(IDecl, TUScope); - // Remember that this needs to be removed when the scope is popped. - TUScope->AddDecl(DeclPtrTy::make(IDecl)); } if (SuperName) { @@ -658,11 +655,10 @@ Sema::DeclPtrTy Sema::ActOnStartClassImplementation( // we should copy them over. IDecl = ObjCInterfaceDecl::Create(Context, CurContext, AtClassImplLoc, ClassName, ClassLoc, false, true); - ObjCInterfaceDecls[ClassName] = IDecl; IDecl->setSuperClass(SDecl); IDecl->setLocEnd(ClassLoc); - - // FIXME: PushOnScopeChains? + + PushOnScopeChains(IDecl, TUScope); CurContext->addDecl(Context, IDecl); // Remember that this needs to be removed when the scope is popped. TUScope->AddDecl(DeclPtrTy::make(IDecl)); @@ -1042,11 +1038,7 @@ Sema::ActOnForwardClassDeclaration(SourceLocation AtClassLoc, if (!IDecl) { // Not already seen? Make a forward decl. IDecl = ObjCInterfaceDecl::Create(Context, CurContext, AtClassLoc, IdentList[i], SourceLocation(), true); - ObjCInterfaceDecls[IdentList[i]] = IDecl; - PushOnScopeChains(IDecl, TUScope); - // Remember that this needs to be removed when the scope is popped. - TUScope->AddDecl(DeclPtrTy::make(IDecl)); } Interfaces.push_back(IDecl); diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp index 4b5a04b450..df869d9a6b 100644 --- a/lib/Sema/SemaLookup.cpp +++ b/lib/Sema/SemaLookup.cpp @@ -935,9 +935,6 @@ Sema::LookupName(Scope *S, DeclarationName Name, LookupNameKind NameKind, // Unlike typedef's, they can only be introduced at file-scope (and are // therefore not scoped decls). They can, however, be shadowed by // other names in IDNS_Ordinary. - ObjCInterfaceDeclsTy::iterator IDI = ObjCInterfaceDecls.find(II); - if (IDI != ObjCInterfaceDecls.end()) - return LookupResult::CreateLookupResult(Context, IDI->second); ObjCAliasTy::iterator I = ObjCAliasDecls.find(II); if (I != ObjCAliasDecls.end()) return LookupResult::CreateLookupResult(Context,