diff options
-rw-r--r-- | include/clang/Frontend/ASTUnit.h | 2 | ||||
-rw-r--r-- | lib/Frontend/ASTUnit.cpp | 3 | ||||
-rw-r--r-- | tools/CIndex/CIndex.cpp | 5 |
3 files changed, 7 insertions, 3 deletions
diff --git a/include/clang/Frontend/ASTUnit.h b/include/clang/Frontend/ASTUnit.h index 5eb7f494d7..2b410ca1c8 100644 --- a/include/clang/Frontend/ASTUnit.h +++ b/include/clang/Frontend/ASTUnit.h @@ -58,6 +58,8 @@ public: const Diagnostic &getDiagnostic() const { return *Diags.get(); } Diagnostic &getDiagnostic() { return *Diags.get(); } + + const std::string &getOriginalSourceFileName(); /// \brief Create a ASTUnit from a PCH file. /// diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index 8143263ca2..d04f785ebe 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -77,6 +77,9 @@ public: } // anonymous namespace +const std::string &ASTUnit::getOriginalSourceFileName() { + return dyn_cast<PCHReader>(Ctx->getExternalSource())->getOriginalSourceFile(); +} ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, FileManager &FileMgr, diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp index 5d1ee9684f..ef285e0778 100644 --- a/tools/CIndex/CIndex.cpp +++ b/tools/CIndex/CIndex.cpp @@ -194,9 +194,8 @@ CXTranslationUnit clang_createTranslationUnit( const char *clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit) { assert(CTUnit && "Passed null CXTranslationUnit"); - //ASTUnit *CXXUnit = static_cast<ASTUnit *>(CTUnit); - //return CXXUnit->getOriginalSourceFileName().c_str(); - return "<unimplemented>"; + ASTUnit *CXXUnit = static_cast<ASTUnit *>(CTUnit); + return CXXUnit->getOriginalSourceFileName().c_str(); } void clang_loadTranslationUnit(CXTranslationUnit CTUnit, |