From 27f442229ec4220271a8b44675165f09f99222ac Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Thu, 13 Mar 2014 21:47:07 +0000 Subject: [PATCH] [C++11] Replacing ObjCInterfaceDecl iterators visible_extensions_begin() and visible_extensions_end() with iterator_range visible_extensions(). Updating all of the usages of the iterators with range-based for loops. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203855 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/AST/DeclObjC.h | 8 +++++ lib/ARCMigrate/TransProperties.cpp | 8 ++--- lib/AST/DeclObjC.cpp | 5 +-- lib/Sema/SemaDeclObjC.cpp | 35 +++++-------------- .../Checkers/IvarInvalidationChecker.cpp | 8 ++--- 5 files changed, 21 insertions(+), 43 deletions(-) diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h index dbdc815a95..9653ad2ca9 100644 --- a/include/clang/AST/DeclObjC.h +++ b/include/clang/AST/DeclObjC.h @@ -1162,6 +1162,14 @@ public: typedef filtered_category_iterator visible_extensions_iterator; + typedef llvm::iterator_range + visible_extensions_range; + + visible_extensions_range visible_extensions() const { + return visible_extensions_range(visible_extensions_begin(), + visible_extensions_end()); + } + /// \brief Retrieve an iterator to the beginning of the visible-extensions /// list. visible_extensions_iterator visible_extensions_begin() const { diff --git a/lib/ARCMigrate/TransProperties.cpp b/lib/ARCMigrate/TransProperties.cpp index 4a3261246c..82d820e6eb 100644 --- a/lib/ARCMigrate/TransProperties.cpp +++ b/lib/ARCMigrate/TransProperties.cpp @@ -139,12 +139,8 @@ public: AtPropDeclsTy AtExtProps; // Look through extensions. - for (ObjCInterfaceDecl::visible_extensions_iterator - ext = iface->visible_extensions_begin(), - extEnd = iface->visible_extensions_end(); - ext != extEnd; ++ext) { - collectProperties(*ext, AtExtProps, &AtProps); - } + for (auto *Ext : iface->visible_extensions()) + collectProperties(Ext, AtExtProps, &AtProps); for (AtPropDeclsTy::iterator I = AtExtProps.begin(), E = AtExtProps.end(); I != E; ++I) { diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp index d81c53c256..2fe7dac95c 100644 --- a/lib/AST/DeclObjC.cpp +++ b/lib/AST/DeclObjC.cpp @@ -463,10 +463,7 @@ ObjCIvarDecl *ObjCInterfaceDecl::lookupInstanceVariable(IdentifierInfo *ID, return I; } - for (ObjCInterfaceDecl::visible_extensions_iterator - Ext = ClassDecl->visible_extensions_begin(), - ExtEnd = ClassDecl->visible_extensions_end(); - Ext != ExtEnd; ++Ext) { + for (const auto *Ext : ClassDecl->visible_extensions()) { if (ObjCIvarDecl *I = Ext->getIvarDecl(ID)) { clsDeclared = ClassDecl; return I; diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index ebaae8f7b8..c3e511966c 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -1179,11 +1179,7 @@ void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, continue; } // Check class extensions (unnamed categories) for duplicate ivars. - for (ObjCInterfaceDecl::visible_extensions_iterator - Ext = IDecl->visible_extensions_begin(), - ExtEnd = IDecl->visible_extensions_end(); - Ext != ExtEnd; ++Ext) { - ObjCCategoryDecl *CDecl = *Ext; + for (const auto *CDecl : IDecl->visible_extensions()) { if (const ObjCIvarDecl *ClsExtIvar = CDecl->getIvarDecl(ImplIvar->getIdentifier())) { Diag(ImplIvar->getLocation(), diag::err_duplicate_ivar_declaration); @@ -1883,21 +1879,16 @@ void Sema::MatchAllMethodDeclarations(const SelectorSet &InsMap, // i.e. when WarnCategoryMethodImpl is false, check declarations in class // extension; as well as those in categories. if (!WarnCategoryMethodImpl) { - for (auto *Cat : I->visible_categories()) { + for (auto *Cat : I->visible_categories()) MatchAllMethodDeclarations(InsMap, ClsMap, InsMapSeen, ClsMapSeen, IMPDecl, Cat, IncompleteImpl, false, WarnCategoryMethodImpl); - } } else { // Also methods in class extensions need be looked at next. - for (ObjCInterfaceDecl::visible_extensions_iterator - Ext = I->visible_extensions_begin(), - ExtEnd = I->visible_extensions_end(); - Ext != ExtEnd; ++Ext) { + for (auto *Ext : I->visible_extensions()) MatchAllMethodDeclarations(InsMap, ClsMap, InsMapSeen, ClsMapSeen, - IMPDecl, *Ext, IncompleteImpl, false, + IMPDecl, Ext, IncompleteImpl, false, WarnCategoryMethodImpl); - } } // Check for any implementation of a methods declared in protocol. @@ -2005,12 +1996,8 @@ void Sema::ImplMethodsVsClassMethods(Scope *S, ObjCImplDecl* IMPDecl, CheckProtocolMethodDefs(*this, IMPDecl->getLocation(), PI, IncompleteImpl, InsMap, ClsMap, I, ExplicitImplProtocols); // Check class extensions (unnamed categories) - for (ObjCInterfaceDecl::visible_extensions_iterator - Ext = I->visible_extensions_begin(), - ExtEnd = I->visible_extensions_end(); - Ext != ExtEnd; ++Ext) { - ImplMethodsVsClassMethods(S, IMPDecl, *Ext, IncompleteImpl); - } + for (auto *Ext : I->visible_extensions()) + ImplMethodsVsClassMethods(S, IMPDecl, Ext, IncompleteImpl); } else if (ObjCCategoryDecl *C = dyn_cast(CDecl)) { // For extended class, unimplemented methods in its protocols will // be reported in the primary class. @@ -2655,10 +2642,7 @@ Decl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd, ArrayRef allMethods, // of the other class extensions. Mark them as synthesized as // property will be synthesized when property with same name is // seen in the @implementation. - for (ObjCInterfaceDecl::visible_extensions_iterator - Ext = IDecl->visible_extensions_begin(), - ExtEnd = IDecl->visible_extensions_end(); - Ext != ExtEnd; ++Ext) { + for (const auto *Ext : IDecl->visible_extensions()) { for (const auto *Property : Ext->properties()) { // Skip over properties declared @dynamic if (const ObjCPropertyImplDecl *PIDecl @@ -2667,10 +2651,7 @@ Decl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd, ArrayRef allMethods, == ObjCPropertyImplDecl::Dynamic) continue; - for (ObjCInterfaceDecl::visible_extensions_iterator - Ext = IDecl->visible_extensions_begin(), - ExtEnd = IDecl->visible_extensions_end(); - Ext != ExtEnd; ++Ext) { + for (const auto *Ext : IDecl->visible_extensions()) { if (ObjCMethodDecl *GetterMethod = Ext->getInstanceMethod(Property->getGetterName())) GetterMethod->setPropertyAccessor(true); diff --git a/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp b/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp index ed0e460b3a..da458e766c 100644 --- a/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp @@ -262,12 +262,8 @@ void IvarInvalidationCheckerImpl::containsInvalidationMethod( // Visit all categories in case the invalidation method is declared in // a category. - for (ObjCInterfaceDecl::visible_extensions_iterator - Ext = InterfD->visible_extensions_begin(), - ExtEnd = InterfD->visible_extensions_end(); - Ext != ExtEnd; ++Ext) { - containsInvalidationMethod(*Ext, OutInfo, Partial); - } + for (const auto *Ext : InterfD->visible_extensions()) + containsInvalidationMethod(Ext, OutInfo, Partial); containsInvalidationMethod(InterfD->getSuperClass(), OutInfo, Partial); return; -- 2.40.0