r192203 - Convert anachronistic use of 'void *' to 'DeclContext *' in Scope that was a holdover from the long-dead Action interface.

Benjamin Kramer benny.kra at gmail.com
Tue Oct 8 10:15:58 PDT 2013


On 08.10.2013, at 19:08, Ted Kremenek <kremenek at apple.com> wrote:

> Author: kremenek
> Date: Tue Oct  8 12:08:03 2013
> New Revision: 192203
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=192203&view=rev
> Log:
> Convert anachronistic use of 'void *' to 'DeclContext *' in Scope that was a holdover from the long-dead Action interface.
> 
> Modified:
>    cfe/trunk/include/clang/Sema/Scope.h
>    cfe/trunk/lib/Sema/IdentifierResolver.cpp
>    cfe/trunk/lib/Sema/Sema.cpp
>    cfe/trunk/lib/Sema/SemaCodeComplete.cpp
>    cfe/trunk/lib/Sema/SemaDecl.cpp
>    cfe/trunk/lib/Sema/SemaDeclCXX.cpp
>    cfe/trunk/lib/Sema/SemaExprCXX.cpp
>    cfe/trunk/lib/Sema/SemaLookup.cpp
>    cfe/trunk/lib/Sema/SemaOpenMP.cpp
>    cfe/trunk/lib/Sema/SemaTemplate.cpp
> 
> Modified: cfe/trunk/include/clang/Sema/Scope.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Scope.h?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Sema/Scope.h (original)
> +++ cfe/trunk/include/clang/Sema/Scope.h Tue Oct  8 12:08:03 2013
> @@ -146,11 +146,10 @@ private:
>   typedef llvm::SmallPtrSet<Decl *, 32> DeclSetTy;
>   DeclSetTy DeclsInScope;
> 
> -  /// Entity - The entity with which this scope is associated. For
> +  /// The DeclContext with which this scope is associated. For
>   /// example, the entity of a class scope is the class itself, the
> -  /// entity of a function scope is a function, etc. This field is
> -  /// maintained by the Action implementation.
> -  void *Entity;
> +  /// entity of a function scope is a function, etc.
> +  DeclContext *Entity;
> 
>   typedef SmallVector<UsingDirectiveDecl *, 2> UsingDirectivesTy;
>   UsingDirectivesTy UsingDirectives;
> @@ -239,8 +238,8 @@ public:
>     return DeclsInScope.count(D) != 0;
>   }
> 
> -  void* getEntity() const { return Entity; }
> -  void setEntity(void *E) { Entity = E; }
> +  DeclContext *getEntity() const { return Entity; }
> +  void setEntity(DeclContext *E) { Entity = E; }
> 
>   bool hasErrorOccurred() const { return ErrorTrap.hasErrorOccurred(); }
> 
> 
> Modified: cfe/trunk/lib/Sema/IdentifierResolver.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/IdentifierResolver.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/IdentifierResolver.cpp (original)
> +++ cfe/trunk/lib/Sema/IdentifierResolver.cpp Tue Oct  8 12:08:03 2013
> @@ -100,8 +100,7 @@ bool IdentifierResolver::isDeclInScope(D
> 
>   if (Ctx->isFunctionOrMethod() || S->isFunctionPrototypeScope()) {
>     // Ignore the scopes associated within transparent declaration contexts.
> -    while (S->getEntity() &&
> -           ((DeclContext *)S->getEntity())->isTransparentContext())
> +    while (S->getEntity() && S->getEntity()->isTransparentContext())
>       S = S->getParent();
> 
>     if (S->isDeclScope(D))
> 
> Modified: cfe/trunk/lib/Sema/Sema.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/Sema.cpp (original)
> +++ cfe/trunk/lib/Sema/Sema.cpp Tue Oct  8 12:08:03 2013
> @@ -997,7 +997,7 @@ Scope *Sema::getScopeForContext(DeclCont
>     // Ignore scopes that cannot have declarations. This is important for
>     // out-of-line definitions of static class members.
>     if (S->getFlags() & (Scope::DeclScope | Scope::TemplateParamScope))
> -      if (DeclContext *Entity = static_cast<DeclContext *> (S->getEntity()))
> +      if (DeclContext *Entity = S->getEntity())
>         if (Ctx == Entity->getPrimaryContext())
>           return S;
>   }
> 
> Modified: cfe/trunk/lib/Sema/SemaCodeComplete.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCodeComplete.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaCodeComplete.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaCodeComplete.cpp Tue Oct  8 12:08:03 2013
> @@ -3613,7 +3613,7 @@ void Sema::CodeCompleteMemberReferenceEx
>         bool IsDependent = BaseType->isDependentType();
>         if (!IsDependent) {
>           for (Scope *DepScope = S; DepScope; DepScope = DepScope->getParent())
> -            if (DeclContext *Ctx = (DeclContext *)DepScope->getEntity()) {
> +            if (DeclContext *Ctx = DepScope->getEntity()) {
>               IsDependent = Ctx->isDependentContext();
>               break;
>             }
> @@ -4151,7 +4151,7 @@ void Sema::CodeCompleteNamespaceDecl(Sco
>   if (!CodeCompleter)
>     return;
> 
> -  DeclContext *Ctx = (DeclContext *)S->getEntity();
> +  DeclContext *Ctx = S->getEntity();
>   if (!S->getParent())
>     Ctx = Context.getTranslationUnitDecl();
> 
> @@ -4359,7 +4359,7 @@ void Sema::CodeCompleteConstructorInitia
> 
> /// \brief Determine whether this scope denotes a namespace.
> static bool isNamespaceScope(Scope *S) {
> -  DeclContext *DC = static_cast<DeclContext *>(S->getEntity());
> +  DeclContext *DC = S->getEntity();
>   if (!DC)
>     return false;
> 
> @@ -6893,7 +6893,7 @@ void Sema::CodeCompleteObjCMethodDecl(Sc
>   }
> 
>   if (!SearchDecl && S) {
> -    if (DeclContext *DC = static_cast<DeclContext *>(S->getEntity()))
> +    if (DeclContext *DC = S->getEntity())
>       SearchDecl = dyn_cast<ObjCContainerDecl>(DC);
>   }
> 
> 
> Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDecl.cpp Tue Oct  8 12:08:03 2013
> @@ -947,7 +947,7 @@ void Sema::ExitDeclaratorContext(Scope *
>   // enforced by an assert in EnterDeclaratorContext.
>   Scope *Ancestor = S->getParent();
>   while (!Ancestor->getEntity()) Ancestor = Ancestor->getParent();
> -  CurContext = (DeclContext*) Ancestor->getEntity();
> +  CurContext = Ancestor->getEntity();
> 
>   // We don't need to do anything with the scope, which is going to
>   // disappear.
> @@ -1017,8 +1017,7 @@ void Sema::PushOnScopeChains(NamedDecl *
>   // Move up the scope chain until we find the nearest enclosing
>   // non-transparent context. The declaration will be introduced into this
>   // scope.
> -  while (S->getEntity() &&
> -         ((DeclContext *)S->getEntity())->isTransparentContext())
> +  while (S->getEntity() && S->getEntity()->isTransparentContext())
>     S = S->getParent();
> 
>   // Add scoped declarations into their context, so that they can be
> @@ -1088,7 +1087,7 @@ bool Sema::isDeclInScope(NamedDecl *D, D
> Scope *Sema::getScopeForDeclContext(Scope *S, DeclContext *DC) {
>   DeclContext *TargetDC = DC->getPrimaryContext();
>   do {
> -    if (DeclContext *ScopeDC = (DeclContext*) S->getEntity())
> +    if (DeclContext *ScopeDC = S->getEntity())
>       if (ScopeDC->getPrimaryContext() == TargetDC)
>         return S;
>   } while ((S = S->getParent()));
> @@ -1464,8 +1463,7 @@ ObjCInterfaceDecl *Sema::getObjCInterfac
> /// contain non-field names.
> Scope *Sema::getNonFieldDeclScope(Scope *S) {
>   while (((S->getFlags() & Scope::DeclScope) == 0) ||
> -         (S->getEntity() &&
> -          ((DeclContext *)S->getEntity())->isTransparentContext()) ||
> +         (S->getEntity() && S->getEntity()->isTransparentContext()) ||
>          (S->isClassScope() && !getLangOpts().CPlusPlus))
>     S = S->getParent();
>   return S;
> @@ -5435,6 +5433,18 @@ void Sema::CheckShadow(Scope *S, VarDecl
>   if (D->hasGlobalStorage())
>     return;
> 
> +  // Don't diagnose variables whose declarations and scope are expanded
> +  // from the same macro instantiation.
> +  SourceLocation DLoc = D->getLocation();
> +  if (DLoc.isMacroID()) {
> +
> +
> +
> +
> +  }
> +
> +
> +

This addition of invisible code looks unrelated.

- Ben

>   DeclContext *NewDC = D->getDeclContext();
> 
>   // Only diagnose if we're shadowing an unambiguous field or variable.
> @@ -10466,8 +10476,7 @@ Decl *Sema::ActOnTag(Scope *S, unsigned
>              (getLangOpts().CPlusPlus &&
>               S->isFunctionPrototypeScope()) ||
>              ((S->getFlags() & Scope::DeclScope) == 0) ||
> -             (S->getEntity() &&
> -              ((DeclContext *)S->getEntity())->isTransparentContext()))
> +             (S->getEntity() && S->getEntity()->isTransparentContext()))
>         S = S->getParent();
>     } else {
>       assert(TUK == TUK_Friend);
> 
> Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Tue Oct  8 12:08:03 2013
> @@ -6934,7 +6934,7 @@ void Sema::PushUsingDirective(Scope *S,
>   // If the scope has an associated entity and the using directive is at
>   // namespace or translation unit scope, add the UsingDirectiveDecl into
>   // its lookup structure so qualified name lookup can find it.
> -  DeclContext *Ctx = static_cast<DeclContext*>(S->getEntity());
> +  DeclContext *Ctx = S->getEntity();
>   if (Ctx && !Ctx->isFunctionOrMethod())
>     Ctx->addDecl(UDir);
>   else
> 
> Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Tue Oct  8 12:08:03 2013
> @@ -305,7 +305,7 @@ ParsedType Sema::getDestructorName(Sourc
>     SemaDiagnosticBuilder DtorDiag = Diag(NameLoc,
>                                           diag::err_destructor_class_name);
>     if (S) {
> -      const DeclContext *Ctx = static_cast<DeclContext*>(S->getEntity());
> +      const DeclContext *Ctx = S->getEntity();
>       if (const CXXRecordDecl *Class = dyn_cast_or_null<CXXRecordDecl>(Ctx))
>         DtorDiag << FixItHint::CreateReplacement(SourceRange(NameLoc),
>                                                  Class->getNameAsString());
> 
> Modified: cfe/trunk/lib/Sema/SemaLookup.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaLookup.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaLookup.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaLookup.cpp Tue Oct  8 12:08:03 2013
> @@ -102,15 +102,14 @@ namespace {
>       //   During unqualified name lookup, the names appear as if they
>       //   were declared in the nearest enclosing namespace which contains
>       //   both the using-directive and the nominated namespace.
> -      DeclContext *InnermostFileDC
> -        = static_cast<DeclContext*>(InnermostFileScope->getEntity());
> +      DeclContext *InnermostFileDC = InnermostFileScope->getEntity();
>       assert(InnermostFileDC && InnermostFileDC->isFileContext());
> 
>       for (; S; S = S->getParent()) {
>         // C++ [namespace.udir]p1:
>         //   A using-directive shall not appear in class scope, but may
>         //   appear in namespace scope or in block scope.
> -        DeclContext *Ctx = static_cast<DeclContext*>(S->getEntity());
> +        DeclContext *Ctx = S->getEntity();
>         if (Ctx && Ctx->isFileContext()) {
>           visit(Ctx, Ctx);
>         } else if (!Ctx || Ctx->isFunctionOrMethod()) {
> @@ -775,7 +774,7 @@ CppNamespaceLookup(Sema &S, LookupResult
> }
> 
> static bool isNamespaceOrTranslationUnitScope(Scope *S) {
> -  if (DeclContext *Ctx = static_cast<DeclContext*>(S->getEntity()))
> +  if (DeclContext *Ctx = S->getEntity())
>     return Ctx->isFileContext();
>   return false;
> }
> @@ -788,12 +787,12 @@ static bool isNamespaceOrTranslationUnit
> // name lookup should continue searching in this semantic context when
> // it leaves the current template parameter scope.
> static std::pair<DeclContext *, bool> findOuterContext(Scope *S) {
> -  DeclContext *DC = static_cast<DeclContext *>(S->getEntity());
> +  DeclContext *DC = S->getEntity();
>   DeclContext *Lexical = 0;
>   for (Scope *OuterS = S->getParent(); OuterS;
>        OuterS = OuterS->getParent()) {
>     if (OuterS->getEntity()) {
> -      Lexical = static_cast<DeclContext *>(OuterS->getEntity());
> +      Lexical = OuterS->getEntity();
>       break;
>     }
>   }
> @@ -879,7 +878,7 @@ bool Sema::CppLookupName(LookupResult &R
>   // go through the scope stack to implicitly declare
>   if (isImplicitlyDeclaredMemberFunctionName(Name)) {
>     for (Scope *PreS = S; PreS; PreS = PreS->getParent())
> -      if (DeclContext *DC = static_cast<DeclContext *>(PreS->getEntity()))
> +      if (DeclContext *DC = PreS->getEntity())
>         DeclareImplicitMemberFunctionsWithName(*this, Name, DC);
>   }
> 
> @@ -918,7 +917,7 @@ bool Sema::CppLookupName(LookupResult &R
>   FindLocalExternScope FindLocals(R);
> 
>   for (; S && !isNamespaceOrTranslationUnitScope(S); S = S->getParent()) {
> -    DeclContext *Ctx = static_cast<DeclContext*>(S->getEntity());
> +    DeclContext *Ctx = S->getEntity();
> 
>     // Check whether the IdResolver has anything in this scope.
>     bool Found = false;
> @@ -1101,7 +1100,7 @@ bool Sema::CppLookupName(LookupResult &R
>       return true;
>     }
> 
> -    DeclContext *Ctx = static_cast<DeclContext *>(S->getEntity());
> +    DeclContext *Ctx = S->getEntity();
>     if (!Ctx && S->isTemplateParamScope() && OutsideOfTemplateParamDC &&
>         S->getParent() && !S->getParent()->isTemplateParamScope()) {
>       // We've just searched the last template parameter scope and
> @@ -1317,9 +1316,7 @@ bool Sema::LookupName(LookupResult &R, S
>     if (NameKind == Sema::LookupRedeclarationWithLinkage) {
>       // Find the nearest non-transparent declaration scope.
>       while (!(S->getFlags() & Scope::DeclScope) ||
> -             (S->getEntity() &&
> -              static_cast<DeclContext *>(S->getEntity())
> -                ->isTransparentContext()))
> +             (S->getEntity() && S->getEntity()->isTransparentContext()))
>         S = S->getParent();
>     }
> 
> @@ -3216,8 +3213,8 @@ static void LookupVisibleDecls(Scope *S,
> 
>   if (!S->getEntity() ||
>       (!S->getParent() &&
> -       !Visited.alreadyVisitedContext((DeclContext *)S->getEntity())) ||
> -      ((DeclContext *)S->getEntity())->isFunctionOrMethod()) {
> +       !Visited.alreadyVisitedContext(S->getEntity())) ||
> +      (S->getEntity())->isFunctionOrMethod()) {
>     FindLocalExternScope FindLocals(Result);
>     // Walk through the declarations in this Scope.
>     for (Scope::decl_iterator D = S->decl_begin(), DEnd = S->decl_end();
> @@ -3236,7 +3233,7 @@ static void LookupVisibleDecls(Scope *S,
>     // Look into this scope's declaration context, along with any of its
>     // parent lookup contexts (e.g., enclosing classes), up to the point
>     // where we hit the context stored in the next outer scope.
> -    Entity = (DeclContext *)S->getEntity();
> +    Entity = S->getEntity();
>     DeclContext *OuterCtx = findOuterContext(S).first; // FIXME
> 
>     for (DeclContext *Ctx = Entity; Ctx && !Ctx->Equals(OuterCtx);
> 
> Modified: cfe/trunk/lib/Sema/SemaOpenMP.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOpenMP.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaOpenMP.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaOpenMP.cpp Tue Oct  8 12:08:03 2013
> @@ -245,8 +245,7 @@ bool DSAStackTy::isOpenMPLocal(VarDecl *
>     isOpenMPLocal =
>       CurScope &&
>       isa<CapturedDecl>(D->getDeclContext()) &&
> -      static_cast<DeclContext *>(
> -        CurScope->getFnParent()->getEntity())->Encloses(D->getDeclContext());
> +      CurScope->getFnParent()->getEntity()->Encloses(D->getDeclContext());
>   }
>   return isOpenMPLocal;
> }
> 
> Modified: cfe/trunk/lib/Sema/SemaTemplate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplate.cpp?rev=192203&r1=192202&r2=192203&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaTemplate.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaTemplate.cpp Tue Oct  8 12:08:03 2013
> @@ -5450,7 +5450,7 @@ Sema::CheckTemplateDeclScope(Scope *S, T
>   // C++ [temp]p2:
>   //   A template-declaration can appear only as a namespace scope or
>   //   class scope declaration.
> -  DeclContext *Ctx = static_cast<DeclContext *>(S->getEntity());
> +  DeclContext *Ctx = S->getEntity();
>   if (Ctx && isa<LinkageSpecDecl>(Ctx) &&
>       cast<LinkageSpecDecl>(Ctx)->getLanguage() != LinkageSpecDecl::lang_cxx)
>     return Diag(TemplateParams->getTemplateLoc(), diag::err_template_linkage)
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits





More information about the cfe-commits mailing list