]> granicus.if.org Git - clang/commitdiff
[libclang] When logging a CXTranslationUnit that came from an AST file, print out...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 5 Mar 2013 20:21:14 +0000 (20:21 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 5 Mar 2013 20:21:14 +0000 (20:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176511 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Frontend/ASTUnit.h
lib/Frontend/ASTUnit.cpp
tools/libclang/CIndex.cpp

index 9a02c0c2b8610a691b3b21f3a8e071f98dc23918..108114dd672463166cc3992c624344da4a1cb457 100644 (file)
@@ -485,6 +485,9 @@ public:
 
   StringRef getMainFileName() const;
 
+  /// \brief If this ASTUnit came from an AST file, returns the filename for it.
+  StringRef getASTFileName() const;
+
   typedef std::vector<Decl *>::iterator top_level_iterator;
 
   top_level_iterator top_level_begin() {
index 3dc6e2e6075cb5dcea9a872ceae0b4207cb304e2..4a956ff3abed4a11bfb333fd6476b51283f69aab 100644 (file)
@@ -1711,6 +1711,15 @@ StringRef ASTUnit::getMainFileName() const {
   return StringRef();
 }
 
+StringRef ASTUnit::getASTFileName() const {
+  if (!isMainFileAST())
+    return StringRef();
+
+  serialization::ModuleFile &
+    Mod = Reader->getModuleManager().getPrimaryModule();
+  return Mod.FileName;
+}
+
 ASTUnit *ASTUnit::create(CompilerInvocation *CI,
                          IntrusiveRefCntPtr<DiagnosticsEngine> Diags,
                          bool CaptureDiagnostics,
index 36224a8cffdad4db9008f539158d965cc556dd7c..2cfaea442bfdcafc407d24be3c074beec99407fe 100644 (file)
@@ -6387,6 +6387,8 @@ Logger &cxindex::Logger::operator<<(CXTranslationUnit TU) {
   if (TU) {
     if (ASTUnit *Unit = cxtu::getASTUnit(TU)) {
       LogOS << '<' << Unit->getMainFileName() << '>';
+      if (Unit->isMainFileAST())
+        LogOS << " (" << Unit->getASTFileName() << ')';
       return *this;
     }
   }