[libclang] In ASTUnit::getMainFileName() Invocation may be null because the ASTUnit

came from loading a PCH/module.

llvm-svn: 172259
This commit is contained in:
Argyrios Kyrtzidis 2013-01-11 22:11:14 +00:00
parent 99c6990457
commit 928e1fdecc
1 changed files with 15 additions and 1 deletions

View File

@ -1689,7 +1689,21 @@ void ASTUnit::transferASTDataFromCompilerInstance(CompilerInstance &CI) {
}
StringRef ASTUnit::getMainFileName() const {
return Invocation->getFrontendOpts().Inputs[0].getFile();
if (Invocation && !Invocation->getFrontendOpts().Inputs.empty()) {
const FrontendInputFile &Input = Invocation->getFrontendOpts().Inputs[0];
if (Input.isFile())
return Input.getFile();
else
return Input.getBuffer()->getBufferIdentifier();
}
if (SourceMgr) {
if (const FileEntry *
FE = SourceMgr->getFileEntryForID(SourceMgr->getMainFileID()))
return FE->getName();
}
return StringRef();
}
ASTUnit *ASTUnit::create(CompilerInvocation *CI,