forked from OSchip/llvm-project
[clangd] Set correct CWD when using compile_flags.txt
This fixes a bug where clangd would attempt to set CWD to the compile_flags.txt file itself. Differential Revision: https://reviews.llvm.org/D94699
This commit is contained in:
parent
aeaeb9e6bd
commit
c77c3d1d18
|
@ -271,7 +271,8 @@ parseJSON(PathRef Path, llvm::StringRef Data, std::string &Error) {
|
|||
}
|
||||
static std::unique_ptr<tooling::CompilationDatabase>
|
||||
parseFixed(PathRef Path, llvm::StringRef Data, std::string &Error) {
|
||||
return tooling::FixedCompilationDatabase::loadFromBuffer(Path, Data, Error);
|
||||
return tooling::FixedCompilationDatabase::loadFromBuffer(
|
||||
llvm::sys::path::parent_path(Path), Data, Error);
|
||||
}
|
||||
|
||||
bool DirectoryBasedGlobalCompilationDatabase::DirectoryCache::load(
|
||||
|
|
|
@ -279,6 +279,17 @@ TEST(GlobalCompilationDatabaseTest, BuildDir) {
|
|||
<< "x/build/compile_flags.json only applicable to x/";
|
||||
}
|
||||
|
||||
TEST(GlobalCompilationDatabaseTest, CompileFlagsDirectory) {
|
||||
MockFS FS;
|
||||
FS.Files[testPath("x/compile_flags.txt")] = "-DFOO";
|
||||
DirectoryBasedGlobalCompilationDatabase CDB(FS);
|
||||
auto Commands = CDB.getCompileCommand(testPath("x/y.cpp"));
|
||||
ASSERT_TRUE(Commands.hasValue());
|
||||
EXPECT_THAT(Commands.getValue().CommandLine, Contains("-DFOO"));
|
||||
// Make sure we pick the right working directory.
|
||||
EXPECT_EQ(testPath("x"), Commands.getValue().Directory);
|
||||
}
|
||||
|
||||
TEST(GlobalCompilationDatabaseTest, NonCanonicalFilenames) {
|
||||
OverlayCDB DB(nullptr);
|
||||
std::vector<std::string> DiscoveredFiles;
|
||||
|
|
Loading…
Reference in New Issue