diff options
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/SemaAccess.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 24 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 52 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 24 | ||||
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiate.cpp | 24 |
5 files changed, 52 insertions, 80 deletions
diff --git a/clang/lib/Sema/SemaAccess.cpp b/clang/lib/Sema/SemaAccess.cpp index 66e6e644655..60c3e726e61 100644 --- a/clang/lib/Sema/SemaAccess.cpp +++ b/clang/lib/Sema/SemaAccess.cpp @@ -1138,11 +1138,9 @@ static void diagnoseBadDirectAccess(Sema &S, // Check whether there's an AccessSpecDecl preceding this in the // chain of the DeclContext. bool isImplicit = true; - for (CXXRecordDecl::decl_iterator - I = DeclaringClass->decls_begin(), E = DeclaringClass->decls_end(); - I != E; ++I) { - if (*I == ImmediateChild) break; - if (isa<AccessSpecDecl>(*I)) { + for (const auto *I : DeclaringClass->decls()) { + if (I == ImmediateChild) break; + if (isa<AccessSpecDecl>(I)) { isImplicit = false; break; } diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index b17031432fd..89310da648a 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -5731,11 +5731,9 @@ static void AddProtocolResults(DeclContext *Ctx, DeclContext *CurContext, ResultBuilder &Results) { typedef CodeCompletionResult Result; - for (DeclContext::decl_iterator D = Ctx->decls_begin(), - DEnd = Ctx->decls_end(); - D != DEnd; ++D) { + for (const auto *D : Ctx->decls()) { // Record any protocols we find. - if (ObjCProtocolDecl *Proto = dyn_cast<ObjCProtocolDecl>(*D)) + if (const auto *Proto = dyn_cast<ObjCProtocolDecl>(D)) if (!OnlyForwardDeclarations || !Proto->hasDefinition()) Results.AddResult(Result(Proto, Results.getBasePriority(Proto), 0), CurContext, 0, false); @@ -5799,11 +5797,9 @@ static void AddInterfaceResults(DeclContext *Ctx, DeclContext *CurContext, ResultBuilder &Results) { typedef CodeCompletionResult Result; - for (DeclContext::decl_iterator D = Ctx->decls_begin(), - DEnd = Ctx->decls_end(); - D != DEnd; ++D) { + for (const auto *D : Ctx->decls()) { // Record any interfaces we find. - if (ObjCInterfaceDecl *Class = dyn_cast<ObjCInterfaceDecl>(*D)) + if (const auto *Class = dyn_cast<ObjCInterfaceDecl>(D)) if ((!OnlyForwardDeclarations || !Class->hasDefinition()) && (!OnlyUnimplemented || !Class->getImplementation())) Results.AddResult(Result(Class, Results.getBasePriority(Class), 0), @@ -5901,10 +5897,8 @@ void Sema::CodeCompleteObjCInterfaceCategory(Scope *S, // Add all of the categories we know about. Results.EnterNewScope(); TranslationUnitDecl *TU = Context.getTranslationUnitDecl(); - for (DeclContext::decl_iterator D = TU->decls_begin(), - DEnd = TU->decls_end(); - D != DEnd; ++D) - if (ObjCCategoryDecl *Category = dyn_cast<ObjCCategoryDecl>(*D)) + for (const auto *D : TU->decls()) + if (const auto *Category = dyn_cast<ObjCCategoryDecl>(D)) if (CategoryNames.insert(Category->getIdentifier())) Results.AddResult(Result(Category, Results.getBasePriority(Category),0), CurContext, 0, false); @@ -5975,10 +5969,8 @@ void Sema::CodeCompleteObjCPropertyDefinition(Scope *S) { // Ignore any properties that have already been implemented. Container = getContainerDef(Container); - for (DeclContext::decl_iterator D = Container->decls_begin(), - DEnd = Container->decls_end(); - D != DEnd; ++D) - if (ObjCPropertyImplDecl *PropertyImpl = dyn_cast<ObjCPropertyImplDecl>(*D)) + for (const auto *D : Container->decls()) + if (const auto *PropertyImpl = dyn_cast<ObjCPropertyImplDecl>(D)) Results.Ignore(PropertyImpl->getPropertyDecl()); // Add any properties that we find. diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 2ff2d8626ed..40eb1d5271f 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3466,12 +3466,10 @@ static bool InjectAnonymousStructOrUnionMembers(Sema &SemaRef, Scope *S, bool Invalid = false; // Look every FieldDecl and IndirectFieldDecl with a name. - for (RecordDecl::decl_iterator D = AnonRecord->decls_begin(), - DEnd = AnonRecord->decls_end(); - D != DEnd; ++D) { - if ((isa<FieldDecl>(*D) || isa<IndirectFieldDecl>(*D)) && - cast<NamedDecl>(*D)->getDeclName()) { - ValueDecl *VD = cast<ValueDecl>(*D); + for (auto *D : AnonRecord->decls()) { + if ((isa<FieldDecl>(D) || isa<IndirectFieldDecl>(D)) && + cast<NamedDecl>(D)->getDeclName()) { + ValueDecl *VD = cast<ValueDecl>(D); if (CheckAnonMemberRedeclaration(SemaRef, S, Owner, VD->getDeclName(), VD->getLocation(), diagKind)) { // C++ [class.union]p2: @@ -3546,11 +3544,9 @@ StorageClassSpecToVarDeclStorageClass(const DeclSpec &DS) { static SourceLocation findDefaultInitializer(const CXXRecordDecl *Record) { assert(Record->hasInClassInitializer()); - for (DeclContext::decl_iterator I = Record->decls_begin(), - E = Record->decls_end(); - I != E; ++I) { - FieldDecl *FD = dyn_cast<FieldDecl>(*I); - if (IndirectFieldDecl *IFD = dyn_cast<IndirectFieldDecl>(*I)) + for (const auto *I : Record->decls()) { + const auto *FD = dyn_cast<FieldDecl>(I); + if (const auto *IFD = dyn_cast<IndirectFieldDecl>(I)) FD = IFD->getAnonField(); if (FD && FD->hasInClassInitializer()) return FD->getLocation(); @@ -3660,10 +3656,8 @@ Decl *Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS, // The member-specification of an anonymous union shall only // define non-static data members. [Note: nested types and // functions cannot be declared within an anonymous union. ] - for (DeclContext::decl_iterator Mem = Record->decls_begin(), - MemEnd = Record->decls_end(); - Mem != MemEnd; ++Mem) { - if (FieldDecl *FD = dyn_cast<FieldDecl>(*Mem)) { + for (auto *Mem : Record->decls()) { + if (auto *FD = dyn_cast<FieldDecl>(Mem)) { // C++ [class.union]p3: // An anonymous union shall not have private or protected // members (clause 11). @@ -3681,14 +3675,14 @@ Decl *Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS, // array of such objects. if (CheckNontrivialField(FD)) Invalid = true; - } else if ((*Mem)->isImplicit()) { + } else if (Mem->isImplicit()) { // Any implicit members are fine. - } else if (isa<TagDecl>(*Mem) && (*Mem)->getDeclContext() != Record) { + } else if (isa<TagDecl>(Mem) && Mem->getDeclContext() != Record) { // This is a type that showed up in an // elaborated-type-specifier inside the anonymous struct or // union, but which actually declares a type outside of the // anonymous struct or union. It's okay. - } else if (RecordDecl *MemRecord = dyn_cast<RecordDecl>(*Mem)) { + } else if (auto *MemRecord = dyn_cast<RecordDecl>(Mem)) { if (!MemRecord->isAnonymousStructOrUnion() && MemRecord->getDeclName()) { // Visual C++ allows type definition in anonymous struct or union. @@ -3709,26 +3703,26 @@ Decl *Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS, diag::ext_anonymous_record_with_anonymous_type) << (int)Record->isUnion(); } - } else if (isa<AccessSpecDecl>(*Mem)) { + } else if (isa<AccessSpecDecl>(Mem)) { // Any access specifier is fine. } else { // We have something that isn't a non-static data // member. Complain about it. unsigned DK = diag::err_anonymous_record_bad_member; - if (isa<TypeDecl>(*Mem)) + if (isa<TypeDecl>(Mem)) DK = diag::err_anonymous_record_with_type; - else if (isa<FunctionDecl>(*Mem)) + else if (isa<FunctionDecl>(Mem)) DK = diag::err_anonymous_record_with_function; - else if (isa<VarDecl>(*Mem)) + else if (isa<VarDecl>(Mem)) DK = diag::err_anonymous_record_with_static; // Visual C++ allows type definition in anonymous struct or union. if (getLangOpts().MicrosoftExt && DK == diag::err_anonymous_record_with_type) - Diag((*Mem)->getLocation(), diag::ext_anonymous_record_with_type) + Diag(Mem->getLocation(), diag::ext_anonymous_record_with_type) << (int)Record->isUnion(); else { - Diag((*Mem)->getLocation(), DK) + Diag(Mem->getLocation(), DK) << (int)Record->isUnion(); Invalid = true; } @@ -9620,9 +9614,8 @@ Decl *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, Decl *D) { // and reattach to the current context. if (D->getLexicalDeclContext() == Context.getTranslationUnitDecl()) { // Is the decl actually in the context? - for (DeclContext::decl_iterator DI = Context.getTranslationUnitDecl()->decls_begin(), - DE = Context.getTranslationUnitDecl()->decls_end(); DI != DE; ++DI) { - if (*DI == D) { + for (const auto *DI : Context.getTranslationUnitDecl()->decls()) { + if (DI == D) { Context.getTranslationUnitDecl()->removeDecl(D); break; } @@ -11880,9 +11873,8 @@ void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, // members of anonymous structs and unions in the total. unsigned NumNamedMembers = 0; if (Record) { - for (RecordDecl::decl_iterator i = Record->decls_begin(), - e = Record->decls_end(); i != e; i++) { - if (IndirectFieldDecl *IFD = dyn_cast<IndirectFieldDecl>(*i)) + for (const auto *I : Record->decls()) { + if (const auto *IFD = dyn_cast<IndirectFieldDecl>(I)) if (IFD->getDeclName()) ++NumNamedMembers; } diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 54ba508383b..c373b46a510 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -2319,11 +2319,10 @@ namespace { llvm::SmallPtrSet<ValueDecl*, 4> UninitializedFields; // At the beginning, all fields are uninitialized. - for (DeclContext::decl_iterator I = RD->decls_begin(), E = RD->decls_end(); - I != E; ++I) { - if (FieldDecl *FD = dyn_cast<FieldDecl>(*I)) { + for (auto *I : RD->decls()) { + if (auto *FD = dyn_cast<FieldDecl>(I)) { UninitializedFields.insert(FD); - } else if (IndirectFieldDecl *IFD = dyn_cast<IndirectFieldDecl>(*I)) { + } else if (auto *IFD = dyn_cast<IndirectFieldDecl>(I)) { UninitializedFields.insert(IFD->getAnonField()); } } @@ -3645,10 +3644,8 @@ bool Sema::SetCtorInitializers(CXXConstructorDecl *Constructor, bool AnyErrors, } // Fields. - for (DeclContext::decl_iterator Mem = ClassDecl->decls_begin(), - MemEnd = ClassDecl->decls_end(); - Mem != MemEnd; ++Mem) { - if (FieldDecl *F = dyn_cast<FieldDecl>(*Mem)) { + for (auto *Mem : ClassDecl->decls()) { + if (auto *F = dyn_cast<FieldDecl>(Mem)) { // C++ [class.bit]p2: // A declaration for a bit-field that omits the identifier declares an // unnamed bit-field. Unnamed bit-fields are not members and cannot be @@ -3671,7 +3668,7 @@ bool Sema::SetCtorInitializers(CXXConstructorDecl *Constructor, bool AnyErrors, if (Info.isImplicitCopyOrMove()) continue; - if (IndirectFieldDecl *F = dyn_cast<IndirectFieldDecl>(*Mem)) { + if (auto *F = dyn_cast<IndirectFieldDecl>(Mem)) { if (F->getType()->isIncompleteArrayType()) { assert(ClassDecl->hasFlexibleArrayMember() && "Incomplete array type is not valid"); @@ -4337,9 +4334,7 @@ static void CheckAbstractClassUsage(AbstractUsageInfo &Info, /// Check for invalid uses of an abstract type within a class definition. static void CheckAbstractClassUsage(AbstractUsageInfo &Info, CXXRecordDecl *RD) { - for (CXXRecordDecl::decl_iterator - I = RD->decls_begin(), E = RD->decls_end(); I != E; ++I) { - Decl *D = *I; + for (auto *D : RD->decls()) { if (D->isImplicit()) continue; // Methods and method templates. @@ -6571,9 +6566,8 @@ static void DiagnoseNamespaceInlineMismatch(Sema &S, SourceLocation KeywordLoc, NS->setInline(*IsInline); // Patch up the lookup table for the containing namespace. This isn't really // correct, but it's good enough for this particular case. - for (DeclContext::decl_iterator I = PrevNS->decls_begin(), - E = PrevNS->decls_end(); I != E; ++I) - if (NamedDecl *ND = dyn_cast<NamedDecl>(*I)) + for (auto *I : PrevNS->decls()) + if (auto *ND = dyn_cast<NamedDecl>(I)) PrevNS->getParent()->makeDeclVisibleInContext(ND); return; } diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index 0fdf48ba74c..bef073080bf 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -2055,9 +2055,7 @@ Sema::InstantiateClass(SourceLocation PointOfInstantiation, LateInstantiatedAttrVec LateAttrs; Instantiator.enableLateAttributeInstantiation(&LateAttrs); - for (RecordDecl::decl_iterator Member = Pattern->decls_begin(), - MemberEnd = Pattern->decls_end(); - Member != MemberEnd; ++Member) { + for (auto *Member : Pattern->decls()) { // Don't instantiate members not belonging in this semantic context. // e.g. for: // @code @@ -2067,19 +2065,19 @@ Sema::InstantiateClass(SourceLocation PointOfInstantiation, // @endcode // 'class B' has the template as lexical context but semantically it is // introduced in namespace scope. - if ((*Member)->getDeclContext() != Pattern) + if (Member->getDeclContext() != Pattern) continue; - if ((*Member)->isInvalidDecl()) { + if (Member->isInvalidDecl()) { Instantiation->setInvalidDecl(); continue; } - Decl *NewMember = Instantiator.Visit(*Member); + Decl *NewMember = Instantiator.Visit(Member); if (NewMember) { if (FieldDecl *Field = dyn_cast<FieldDecl>(NewMember)) { Fields.push_back(Field); - FieldDecl *OldField = cast<FieldDecl>(*Member); + FieldDecl *OldField = cast<FieldDecl>(Member); if (OldField->getInClassInitializer()) FieldsWithMemberInitializers.push_back(std::make_pair(OldField, Field)); @@ -2471,11 +2469,9 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation, TSK == TSK_ExplicitInstantiationDeclaration || (TSK == TSK_ImplicitInstantiation && Instantiation->isLocalClass())) && "Unexpected template specialization kind!"); - for (DeclContext::decl_iterator D = Instantiation->decls_begin(), - DEnd = Instantiation->decls_end(); - D != DEnd; ++D) { + for (auto *D : Instantiation->decls()) { bool SuppressNew = false; - if (FunctionDecl *Function = dyn_cast<FunctionDecl>(*D)) { + if (auto *Function = dyn_cast<FunctionDecl>(D)) { if (FunctionDecl *Pattern = Function->getInstantiatedFromMemberFunction()) { MemberSpecializationInfo *MSInfo @@ -2516,7 +2512,7 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation, std::make_pair(Function, PointOfInstantiation)); } } - } else if (VarDecl *Var = dyn_cast<VarDecl>(*D)) { + } else if (auto *Var = dyn_cast<VarDecl>(D)) { if (isa<VarTemplateSpecializationDecl>(Var)) continue; @@ -2552,7 +2548,7 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation, Var->setTemplateSpecializationKind(TSK, PointOfInstantiation); } } - } else if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(*D)) { + } else if (auto *Record = dyn_cast<CXXRecordDecl>(D)) { // Always skip the injected-class-name, along with any // redeclarations of nested classes, since both would cause us // to try to instantiate the members of a class twice. @@ -2609,7 +2605,7 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation, if (Pattern) InstantiateClassMembers(PointOfInstantiation, Pattern, TemplateArgs, TSK); - } else if (EnumDecl *Enum = dyn_cast<EnumDecl>(*D)) { + } else if (auto *Enum = dyn_cast<EnumDecl>(D)) { MemberSpecializationInfo *MSInfo = Enum->getMemberSpecializationInfo(); assert(MSInfo && "No member specialization information?"); |