diff options
author | Kadir Cetinkaya <kadircet@google.com> | 2019-07-19 09:08:22 +0000 |
---|---|---|
committer | Kadir Cetinkaya <kadircet@google.com> | 2019-07-19 09:08:22 +0000 |
commit | f3ae501d36eb742a82041707d1fe2aba2613e5fc (patch) | |
tree | 3a49e583fc5b8ca3cc6d78c1d15056b9f16f151e | |
parent | 2711e16b354fbb830c54e621c22bf6ee5823437a (diff) | |
download | bcm5719-llvm-f3ae501d36eb742a82041707d1fe2aba2613e5fc.tar.gz bcm5719-llvm-f3ae501d36eb742a82041707d1fe2aba2613e5fc.zip |
[clangd] Handle windows line endings in QueryDriver
Summary:
The previous patch did not fix the end mark. D64789
fixes second case of https://github.com/clangd/clangd/issues/93
Patch by @lh123 !
Reviewers: sammccall, kadircet
Reviewed By: kadircet
Subscribers: MaskRay, ilya-biryukov, jkorous, arphaman, cfe-commits
Tags: #clang-tools-extra, #clang
Differential Revision: https://reviews.llvm.org/D64970
llvm-svn: 366545
-rw-r--r-- | clang-tools-extra/clangd/QueryDriverDatabase.cpp | 6 | ||||
-rw-r--r-- | clang-tools-extra/clangd/test/system-include-extractor.test | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/clang-tools-extra/clangd/QueryDriverDatabase.cpp b/clang-tools-extra/clangd/QueryDriverDatabase.cpp index 28596dafb60..bec6ea7186b 100644 --- a/clang-tools-extra/clangd/QueryDriverDatabase.cpp +++ b/clang-tools-extra/clangd/QueryDriverDatabase.cpp @@ -59,7 +59,7 @@ namespace { std::vector<std::string> parseDriverOutput(llvm::StringRef Output) { std::vector<std::string> SystemIncludes; const char SIS[] = "#include <...> search starts here:"; - constexpr char const *SIE = "End of search list."; + const char SIE[] = "End of search list."; llvm::SmallVector<llvm::StringRef, 8> Lines; Output.split(Lines, '\n', /*MaxSplit=*/-1, /*KeepEmpty=*/false); @@ -70,7 +70,9 @@ std::vector<std::string> parseDriverOutput(llvm::StringRef Output) { return {}; } ++StartIt; - const auto EndIt = std::find(StartIt, Lines.end(), SIE); + const auto EndIt = + llvm::find_if(llvm::make_range(StartIt, Lines.end()), + [SIE](llvm::StringRef Line) { return Line.trim() == SIE; }); if (EndIt == Lines.end()) { elog("System include extraction: end marker missing: {0}", Output); return {}; diff --git a/clang-tools-extra/clangd/test/system-include-extractor.test b/clang-tools-extra/clangd/test/system-include-extractor.test index 8f99db9122a..9f1a3de48bc 100644 --- a/clang-tools-extra/clangd/test/system-include-extractor.test +++ b/clang-tools-extra/clangd/test/system-include-extractor.test @@ -8,7 +8,7 @@ # RUN: echo 'echo -e "#include <...> search starts here:\r" >&2' >> %t.dir/my_driver.sh # RUN: echo 'echo %t.dir/my/dir/ >&2' >> %t.dir/my_driver.sh # RUN: echo 'echo %t.dir/my/dir2/ >&2' >> %t.dir/my_driver.sh -# RUN: echo 'echo End of search list. >&2' >> %t.dir/my_driver.sh +# RUN: echo 'echo -e "End of search list.\r" >&2' >> %t.dir/my_driver.sh # RUN: chmod +x %t.dir/my_driver.sh # Create header files my/dir/a.h and my/dir2/b.h |