]> granicus.if.org Git - clang/commitdiff
[libclang] In ASTUnit::getMainFileName() Invocation may be null because the ASTUnit
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 11 Jan 2013 22:11:14 +0000 (22:11 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 11 Jan 2013 22:11:14 +0000 (22:11 +0000)
came from loading a PCH/module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172259 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/ASTUnit.cpp

index 242586a9be84d98fbe9a77e109ab1ff19c39bf5e..35a9aa4ff00cab259874b60b289c40b2bed7f919 100644 (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,