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