Tooling: Canonicalize Key in IndexByFile[]. llvm::sys::path::native() may be used here.
It fixes test/Tooling on Win32 hosts. llvm-svn: 157350
This commit is contained in:
parent
e351e8c52d
commit
9b2d17c613
|
@ -179,8 +179,10 @@ JSONCompilationDatabase::loadFromBuffer(StringRef DatabaseString,
|
|||
|
||||
std::vector<CompileCommand>
|
||||
JSONCompilationDatabase::getCompileCommands(StringRef FilePath) const {
|
||||
llvm::SmallString<128> NativeFilePath;
|
||||
llvm::sys::path::native(FilePath, NativeFilePath);
|
||||
llvm::StringMap< std::vector<CompileCommandRef> >::const_iterator
|
||||
CommandsRefI = IndexByFile.find(FilePath);
|
||||
CommandsRefI = IndexByFile.find(NativeFilePath);
|
||||
if (CommandsRefI == IndexByFile.end())
|
||||
return std::vector<CompileCommand>();
|
||||
const std::vector<CompileCommandRef> &CommandsRef = CommandsRefI->getValue();
|
||||
|
@ -271,7 +273,9 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) {
|
|||
return false;
|
||||
}
|
||||
llvm::SmallString<8> FileStorage;
|
||||
IndexByFile[File->getValue(FileStorage)].push_back(
|
||||
llvm::SmallString<128> NativeFilePath;
|
||||
llvm::sys::path::native(File->getValue(FileStorage), NativeFilePath);
|
||||
IndexByFile[NativeFilePath].push_back(
|
||||
CompileCommandRef(Directory, Command));
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -142,17 +142,21 @@ bool runToolOnCode(clang::FrontendAction *ToolAction, const Twine &Code,
|
|||
/// \param BaseDirectory An absolute path.
|
||||
static std::string getAbsolutePath(
|
||||
StringRef File, StringRef BaseDirectory) {
|
||||
SmallString<1024> PathStorage;
|
||||
assert(llvm::sys::path::is_absolute(BaseDirectory));
|
||||
if (llvm::sys::path::is_absolute(File)) {
|
||||
return File;
|
||||
llvm::sys::path::native(File, PathStorage);
|
||||
return PathStorage.str();
|
||||
}
|
||||
StringRef RelativePath(File);
|
||||
// FIXME: Should '.\\' be accepted on Win32?
|
||||
if (RelativePath.startswith("./")) {
|
||||
RelativePath = RelativePath.substr(strlen("./"));
|
||||
}
|
||||
llvm::SmallString<1024> AbsolutePath(BaseDirectory);
|
||||
llvm::sys::path::append(AbsolutePath, RelativePath);
|
||||
return AbsolutePath.str();
|
||||
llvm::sys::path::native(Twine(AbsolutePath), PathStorage);
|
||||
return PathStorage.str();
|
||||
}
|
||||
|
||||
ToolInvocation::ToolInvocation(
|
||||
|
|
Loading…
Reference in New Issue