aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/Frontend/ASTUnit.h2
-rw-r--r--lib/Frontend/ASTUnit.cpp3
-rw-r--r--tools/CIndex/CIndex.cpp5
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,