Simplify: don't try to complete the list of decls twice when iterating over the

lookups for a DeclContext.

llvm-svn: 204691
This commit is contained in:
Richard Smith 2014-03-25 00:27:18 +00:00
parent 78cf02a07b
commit 05332ab354
1 changed files with 16 additions and 22 deletions

View File

@ -69,45 +69,39 @@ public:
};
inline DeclContext::lookups_range DeclContext::lookups() const {
return lookups_range(lookups_begin(), lookups_end());
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();
if (Primary->hasExternalVisibleStorage())
getParentASTContext().getExternalSource()->completeVisibleDeclsMap(Primary);
if (StoredDeclsMap *Map = Primary->buildLookup())
return lookups_range(all_lookups_iterator(Map->begin(), Map->end()),
all_lookups_iterator(Map->end(), Map->end()));
return lookups_range();
}
inline DeclContext::all_lookups_iterator DeclContext::lookups_begin() const {
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();
if (Primary->hasExternalVisibleStorage())
getParentASTContext().getExternalSource()->completeVisibleDeclsMap(Primary);
if (StoredDeclsMap *Map = Primary->buildLookup())
return all_lookups_iterator(Map->begin(), Map->end());
return all_lookups_iterator();
return lookups().begin();
}
inline DeclContext::all_lookups_iterator DeclContext::lookups_end() const {
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();
if (Primary->hasExternalVisibleStorage())
getParentASTContext().getExternalSource()->completeVisibleDeclsMap(Primary);
if (StoredDeclsMap *Map = Primary->buildLookup())
return all_lookups_iterator(Map->end(), Map->end());
return all_lookups_iterator();
return lookups().end();
}
inline DeclContext::lookups_range DeclContext::noload_lookups() const {
return lookups_range(noload_lookups_begin(), noload_lookups_end());
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();
if (StoredDeclsMap *Map = Primary->getLookupPtr())
return lookups_range(all_lookups_iterator(Map->begin(), Map->end()),
all_lookups_iterator(Map->end(), Map->end()));
return lookups_range();
}
inline
DeclContext::all_lookups_iterator DeclContext::noload_lookups_begin() const {
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();
if (StoredDeclsMap *Map = Primary->getLookupPtr())
return all_lookups_iterator(Map->begin(), Map->end());
return all_lookups_iterator();
return noload_lookups().begin();
}
inline
DeclContext::all_lookups_iterator DeclContext::noload_lookups_end() const {
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();
if (StoredDeclsMap *Map = Primary->getLookupPtr())
return all_lookups_iterator(Map->end(), Map->end());
return all_lookups_iterator();
return noload_lookups().end();
}
} // end namespace clang