[cfe-commits] r49567 - in /cfe/trunk/lib/Sema: Sema.cpp Sema.h SemaDecl.cpp

Argiris Kirtzidis akyrtzi at gmail.com
Fri Apr 11 17:47:19 PDT 2008


Author: akirtzidis
Date: Fri Apr 11 19:47:19 2008
New Revision: 49567

URL: http://llvm.org/viewvc/llvm-project?rev=49567&view=rev
Log:
Added PushOnScopeChains method to Sema, that adds a decl to both the IdResolver and the Scope.

Modified:
    cfe/trunk/lib/Sema/Sema.cpp
    cfe/trunk/lib/Sema/Sema.h
    cfe/trunk/lib/Sema/SemaDecl.cpp

Modified: cfe/trunk/lib/Sema/Sema.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.cpp?rev=49567&r1=49566&r2=49567&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/Sema.cpp (original)
+++ cfe/trunk/lib/Sema/Sema.cpp Fri Apr 11 19:47:19 2008
@@ -48,31 +48,26 @@
   
   // Add the built-in ObjC types.
   t = cast<TypedefType>(Context.getObjCIdType().getTypePtr());
-  IdResolver.AddDecl(t->getDecl(), S);
-  TUScope->AddDecl(t->getDecl());
+  PushOnScopeChains(t->getDecl(), TUScope);
   t = cast<TypedefType>(Context.getObjCClassType().getTypePtr());
-  IdResolver.AddDecl(t->getDecl(), S);
-  TUScope->AddDecl(t->getDecl());
+  PushOnScopeChains(t->getDecl(), TUScope);
   ObjCInterfaceType *it = cast<ObjCInterfaceType>(Context.getObjCProtoType());
   ObjCInterfaceDecl *IDecl = it->getDecl();
-  IdResolver.AddDecl(IDecl, S);
-  TUScope->AddDecl(IDecl);
+  PushOnScopeChains(IDecl, TUScope);
   
   // Synthesize "typedef struct objc_selector *SEL;"
   RecordDecl *SelTag = RecordDecl::Create(Context, Decl::Struct, CurContext,
                                           SourceLocation(), 
                                           &Context.Idents.get("objc_selector"),
                                           0);
-  IdResolver.AddDecl(SelTag, S);
-  TUScope->AddDecl(SelTag);
+  PushOnScopeChains(SelTag, TUScope);
   
   QualType SelT = Context.getPointerType(Context.getTagDeclType(SelTag));
   TypedefDecl *SelTypedef = TypedefDecl::Create(Context, CurContext,
                                                 SourceLocation(),
                                                 &Context.Idents.get("SEL"),
                                                 SelT, 0);
-  IdResolver.AddDecl(SelTypedef, S);
-  TUScope->AddDecl(SelTypedef);
+  PushOnScopeChains(SelTypedef, TUScope);
   Context.setObjCSelType(SelTypedef);
 }
 

Modified: cfe/trunk/lib/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=49567&r1=49566&r2=49567&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/Sema.h (original)
+++ cfe/trunk/lib/Sema/Sema.h Fri Apr 11 19:47:19 2008
@@ -261,6 +261,9 @@
   void PushDeclContext(DeclContext *CD);
   void PopDeclContext();
 
+  /// Add this decl to the scope shadowed decl chains.
+  void PushOnScopeChains(NamedDecl *D, Scope *S);
+
   /// Subroutines of ActOnDeclarator().
   TypedefDecl *ParseTypedefDecl(Scope *S, Declarator &D, QualType T,
                                 ScopedDecl *LastDecl);

Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=49567&r1=49566&r2=49567&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Apr 11 19:47:19 2008
@@ -51,6 +51,12 @@
   CurContext = CurContext->getParent();
 }
 
+/// Add this decl to the scope shadowed decl chains.
+void Sema::PushOnScopeChains(NamedDecl *D, Scope *S) {
+  IdResolver.AddDecl(D, S);
+  S->AddDecl(D);
+}
+
 void Sema::ActOnPopScope(SourceLocation Loc, Scope *S) {
   if (S->decl_empty()) return;
   assert((S->getFlags() & Scope::DeclScope) &&"Scope shouldn't contain decls!");
@@ -429,10 +435,8 @@
                               SourceLocation IdLoc, QualType Type) {
   ParmVarDecl *New = ParmVarDecl::Create(Context, CurContext, IdLoc, Id, Type, 
                                          VarDecl::None, 0, 0);
-  if (Id) {
-    IdResolver.AddDecl(New, S);
-    S->AddDecl(New);
-  }
+  if (Id)
+    PushOnScopeChains(New, S);
 
   return New;
 }
@@ -896,10 +900,8 @@
   }
   
   // If this has an identifier, add it to the scope stack.
-  if (II) {
-    IdResolver.AddDecl(New, S);
-    S->AddDecl(New);
-  }
+  if (II)
+    PushOnScopeChains(New, S);
   // If any semantic error occurred, mark the decl as invalid.
   if (D.getInvalidType() || InvalidDecl)
     New->setInvalidDecl();
@@ -1117,10 +1119,8 @@
   if (D.getInvalidType())
     New->setInvalidDecl();
     
-  if (II) {
-    IdResolver.AddDecl(New, S);
-    S->AddDecl(New);
-  }
+  if (II)
+    PushOnScopeChains(New, S);
 
   HandleDeclAttributes(New, D.getAttributes(), 0);
   return New;
@@ -1184,10 +1184,8 @@
   for (unsigned p = 0, NumParams = FD->getNumParams(); p < NumParams; ++p) {
     ParmVarDecl *Param = FD->getParamDecl(p);
     // If this has an identifier, add it to the scope stack.
-    if (Param->getIdentifier()) {
-      IdResolver.AddDecl(Param, FnBodyScope);
-      FnBodyScope->AddDecl(Param);
-    }
+    if (Param->getIdentifier())
+      PushOnScopeChains(Param, FnBodyScope);
   }
 
   return FD;
@@ -1378,8 +1376,7 @@
       S = S->getParent();
     
     // Add it to the decl chain.
-    IdResolver.AddDecl(New, S);
-    S->AddDecl(New);
+    PushOnScopeChains(New, S);
   }
   
   HandleDeclAttributes(New, Attr, 0);
@@ -1718,8 +1715,7 @@
                              LastEnumConst);
   
   // Register this decl in the current scope stack.
-  IdResolver.AddDecl(New, S);
-  S->AddDecl(New);
+  PushOnScopeChains(New, S);
   return New;
 }
 





More information about the cfe-commits mailing list