Author: hokein Date: Fri Apr 29 04:45:09 2016 New Revision: 268019 URL: http://llvm.org/viewvc/llvm-project?rev=268019&view=rev Log: [find-all-symbols] Save absolute file path instead of relative file path in SymbolInfo.
Reviewers: bkramer Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D19647 Modified: clang-tools-extra/trunk/include-fixer/find-all-symbols/FindAllSymbols.cpp Modified: clang-tools-extra/trunk/include-fixer/find-all-symbols/FindAllSymbols.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/include-fixer/find-all-symbols/FindAllSymbols.cpp?rev=268019&r1=268018&r2=268019&view=diff ============================================================================== --- clang-tools-extra/trunk/include-fixer/find-all-symbols/FindAllSymbols.cpp (original) +++ clang-tools-extra/trunk/include-fixer/find-all-symbols/FindAllSymbols.cpp Fri Apr 29 04:45:09 2016 @@ -16,6 +16,7 @@ #include "clang/ASTMatchers/ASTMatchers.h" #include "clang/Tooling/Tooling.h" #include "llvm/Support/FileSystem.h" +#include "llvm/Support/Path.h" using namespace clang::ast_matchers; @@ -47,19 +48,37 @@ bool SetCommonInfo(const MatchFinder::Ma SetContext(ND, Symbol); Symbol->Name = ND->getNameAsString(); - SourceLocation Loc = Result.SourceManager->getExpansionLoc(ND->getLocation()); + + const SourceManager *SM = Result.SourceManager; + SourceLocation Loc = SM->getExpansionLoc(ND->getLocation()); if (!Loc.isValid()) { llvm::errs() << "Declaration " << ND->getNameAsString() << "(" << ND->getDeclKindName() << ") has invalid declaration location."; return false; } - std::string FilePath = Result.SourceManager->getFilename(Loc).str(); + + Symbol->LineNumber = SM->getExpansionLineNumber(Loc); + + llvm::StringRef FilePath = SM->getFilename(Loc); if (FilePath.empty()) return false; - Symbol->FilePath = FilePath; - Symbol->LineNumber = Result.SourceManager->getExpansionLineNumber(Loc); + llvm::SmallString<128> AbsolutePath; + if (llvm::sys::path::is_absolute(FilePath)) { + AbsolutePath = FilePath; + } else { + auto WorkingDir = SM->getFileManager() + .getVirtualFileSystem() + ->getCurrentWorkingDirectory(); + if (!WorkingDir) + return false; + AbsolutePath = *WorkingDir; + llvm::sys::path::append(AbsolutePath, FilePath); + } + + llvm::sys::path::remove_dots(AbsolutePath, true); + Symbol->FilePath = AbsolutePath.str(); return true; } } // namespace _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits