Peek inside extern "C" declarations only after name hasn't been matched. Change initial for loop use != comparison rather than <

This commit is contained in:
Frederich Munch 2016-09-17 17:37:01 -04:00 committed by sftnight
parent 83b879cd3a
commit 9759ee7557

View File

@ -62,13 +62,18 @@ namespace cling {
}
NamedDecl* Transaction::containsNamedDecl(llvm::StringRef name) const {
for (auto I = decls_begin(), E = decls_end(); I < E; ++I) {
for (auto I = decls_begin(), E = decls_end(); I != E; ++I) {
for (auto DI : I->m_DGR) {
if (NamedDecl* ND = dyn_cast<NamedDecl>(DI)) {
if (name.equals(ND->getNameAsString()))
return ND;
}
else if (LinkageSpecDecl* LSD = dyn_cast<LinkageSpecDecl>(DI)) {
}
}
// Not found yet, peek inside extern "C" declarations
for (auto I = decls_begin(), E = decls_end(); I != E; ++I) {
for (auto DI : I->m_DGR) {
if (LinkageSpecDecl* LSD = dyn_cast<LinkageSpecDecl>(DI)) {
for (Decl* DI : LSD->decls()) {
if (NamedDecl* ND = dyn_cast<NamedDecl>(DI)) {
if (name.equals(ND->getNameAsString()))
@ -78,7 +83,7 @@ namespace cling {
}
}
}
return 0;
return nullptr;
}
void Transaction::addNestedTransaction(Transaction* nested) {