diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/AST/DeclBase.h | 5 | ||||
| -rw-r--r-- | clang/include/clang/AST/DeclLookups.h | 8 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaLookup.cpp | 10 |
3 files changed, 16 insertions, 7 deletions
diff --git a/clang/include/clang/AST/DeclBase.h b/clang/include/clang/AST/DeclBase.h index 475ea01ae85..6dc5598a857 100644 --- a/clang/include/clang/AST/DeclBase.h +++ b/clang/include/clang/AST/DeclBase.h @@ -1577,6 +1577,11 @@ public: /// of looking up every possible name. class all_lookups_iterator; + typedef llvm::iterator_range<all_lookups_iterator> lookups_range; + + lookups_range lookups() const; + lookups_range noload_lookups() const; + /// \brief Iterators over all possible lookups within this context. all_lookups_iterator lookups_begin() const; all_lookups_iterator lookups_end() const; diff --git a/clang/include/clang/AST/DeclLookups.h b/clang/include/clang/AST/DeclLookups.h index c16975a3307..ce1f1b46bbb 100644 --- a/clang/include/clang/AST/DeclLookups.h +++ b/clang/include/clang/AST/DeclLookups.h @@ -68,6 +68,10 @@ public: } }; +inline DeclContext::lookups_range DeclContext::lookups() const { + return lookups_range(lookups_begin(), lookups_end()); +} + inline DeclContext::all_lookups_iterator DeclContext::lookups_begin() const { DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext(); if (Primary->hasExternalVisibleStorage()) @@ -86,6 +90,10 @@ inline DeclContext::all_lookups_iterator DeclContext::lookups_end() const { return all_lookups_iterator(); } +inline DeclContext::lookups_range DeclContext::noload_lookups() const { + return lookups_range(noload_lookups_begin(), noload_lookups_end()); +} + inline DeclContext::all_lookups_iterator DeclContext::noload_lookups_begin() const { DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext(); diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index c05de38dd80..77da08f8caa 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -3063,13 +3063,9 @@ static void LookupVisibleDecls(DeclContext *Ctx, LookupResult &Result, Result.getSema().ForceDeclarationOfImplicitMembers(Class); // Enumerate all of the results in this context. - for (DeclContext::all_lookups_iterator L = Ctx->lookups_begin(), - LEnd = Ctx->lookups_end(); - L != LEnd; ++L) { - DeclContext::lookup_result R = *L; - for (DeclContext::lookup_iterator I = R.begin(), E = R.end(); I != E; - ++I) { - if (NamedDecl *ND = dyn_cast<NamedDecl>(*I)) { + for (const auto &R : Ctx->lookups()) { + for (auto *I : R) { + if (NamedDecl *ND = dyn_cast<NamedDecl>(I)) { if ((ND = Result.getAcceptableDecl(ND))) { Consumer.FoundDecl(ND, Visited.checkHidden(ND), Ctx, InBaseClass); Visited.add(ND); |

