forked from OSchip/llvm-project
Fixed a problem where variables in modules were not appropriately discovered by
the expression parser. <rdar://problem/21395220> llvm-svn: 241917
This commit is contained in:
parent
03ce2a16bf
commit
9ff456c8a2
|
@ -1527,6 +1527,31 @@ ClangExpressionDeclMap::FindExternalVisibleDecls (NameSearchContext &context,
|
|||
context.m_found.function_with_type_info = true;
|
||||
context.m_found.function = true;
|
||||
}
|
||||
else if (llvm::isa<clang::VarDecl>(decl_from_modules))
|
||||
{
|
||||
if (log)
|
||||
{
|
||||
log->Printf(" CAS::FEVD[%u] Matching variable found for \"%s\" in the modules",
|
||||
current_id,
|
||||
name.GetCString());
|
||||
}
|
||||
|
||||
clang::Decl *copied_decl = m_ast_importer->CopyDecl(m_ast_context, &decl_from_modules->getASTContext(), decl_from_modules);
|
||||
clang::VarDecl *copied_var_decl = copied_decl ? dyn_cast_or_null<clang::VarDecl>(copied_decl) : nullptr;
|
||||
|
||||
if (!copied_var_decl)
|
||||
{
|
||||
if (log)
|
||||
log->Printf(" CAS::FEVD[%u] - Couldn't export a variable declaration from the modules",
|
||||
current_id);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
context.AddNamedDecl(copied_var_decl);
|
||||
|
||||
context.m_found.variable = true;
|
||||
}
|
||||
}
|
||||
} while (0);
|
||||
}
|
||||
|
|
|
@ -74,6 +74,9 @@ class CModulesTestCase(TestBase):
|
|||
|
||||
self.expect("expr MIN((uint64_t)2, (uint64_t)3)", VARIABLES_DISPLAYED_CORRECTLY,
|
||||
substrs = ["uint64_t", "2"])
|
||||
|
||||
self.expect("expr stdin", VARIABLES_DISPLAYED_CORRECTLY,
|
||||
substrs = ["(FILE *)", "0x"])
|
||||
|
||||
if __name__ == '__main__':
|
||||
import atexit
|
||||
|
|
Loading…
Reference in New Issue