forked from OSchip/llvm-project
compile commands header to source heuristic lower-cases filenames before inferring file types
This leads to ".C" files being rewritten as ".c" files and being inferred to be "c" files as opposed to "c++" files. Fixes https://github.com/clangd/clangd/issues/1108 Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D124262
This commit is contained in:
parent
e59e580116
commit
87468e85fc
|
@ -328,7 +328,7 @@ public:
|
|||
StringRef Path = Strings.save(StringRef(OriginalPaths[I]).lower());
|
||||
|
||||
Paths.emplace_back(Path, I);
|
||||
Types.push_back(foldType(guessType(Path)));
|
||||
Types.push_back(foldType(guessType(OriginalPaths[I])));
|
||||
Stems.emplace_back(sys::path::stem(Path), I);
|
||||
auto Dir = ++sys::path::rbegin(Path), DirEnd = sys::path::rend(Path);
|
||||
for (int J = 0; J < DirectorySegmentsIndexed && Dir != DirEnd; ++J, ++Dir)
|
||||
|
|
|
@ -836,6 +836,14 @@ TEST_F(InterpolateTest, Case) {
|
|||
EXPECT_EQ(getProxy("foo/bar/baz/shout.C"), "FOO/BAR/BAZ/SHOUT.cc");
|
||||
}
|
||||
|
||||
TEST_F(InterpolateTest, LanguagePreference) {
|
||||
add("foo/bar/baz/exact.C");
|
||||
add("foo/bar/baz/exact.c");
|
||||
add("other/random/path.cpp");
|
||||
// Proxies for ".H" files are ".C" files, and not ".c files".
|
||||
EXPECT_EQ(getProxy("foo/bar/baz/exact.H"), "foo/bar/baz/exact.C");
|
||||
}
|
||||
|
||||
TEST_F(InterpolateTest, Aliasing) {
|
||||
add("foo.cpp", "-faligned-new");
|
||||
|
||||
|
|
Loading…
Reference in New Issue