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

Ted Kremenek kremenek at apple.com
Tue Oct 8 11:08:18 PDT 2013


Good catch.  Removed in r192211.

On Oct 8, 2013, at 10:15 AM, Benjamin Kramer <benny.kra at gmail.com> wrote:

> 
> 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