<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">ClangdTests/FuzzyMatch.Matches has been failing since this commit on a sanitized clang build on MacOS. I've seen some later commits trying to fix it, but the issue is still there. Could you please take a look?</div><div class=""><br class=""></div><div class="">Steps to reproduce in case you need them:</div><div class=""><font face="Menlo" class="">> cmake -G Ninja -DLIBCXX_SYSROOT=/Path/To/MacOSX.sdk -DCOMPILER_RT_BUILD_BUILTINS=Off -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=Off -DLLVM_USE_SANITIZER="Address;Undefined" -DLLVM_BUILD_RUNTIME=NO /Path/To/llvm</font></div><div class=""><font face="Menlo" class="">> ninja && ninja tools/clang/tools/extra/unittests/clangd/ClangdTests</font></div><div class=""><div class=""><font face="Menlo" class="">> tools/clang/tools/extra/unittests/clangd/ClangdTests</font></div><div class=""><font face="Menlo" class="">[==========] Running 90 tests from 19 test cases.</font></div><div class=""><font face="Menlo" class="">[----------] Global test environment set-up.</font></div><div class=""><font face="Menlo" class="">[----------] 8 tests from ClangdVFSTest</font></div><div class=""><font face="Menlo" class="">[ RUN ] ClangdVFSTest.Parse</font></div><div class=""><font face="Menlo" class="">[ OK ] ClangdVFSTest.Parse (84 ms)</font></div><div class=""><font face="Menlo" class="">[ RUN ] ClangdVFSTest.ParseWithHeader</font></div><div class=""><font face="Menlo" class="">[ OK ] ClangdVFSTest.ParseWithHeader (98 ms)</font></div><div class=""><font face="Menlo" class="">[ RUN ] ClangdVFSTest.Reparse</font></div><div class=""><font face="Menlo" class="">[ OK ] ClangdVFSTest.Reparse (49 ms)</font></div><div class=""><font face="Menlo" class="">[ RUN ] ClangdVFSTest.ReparseOnHeaderChange</font></div><div class=""><font face="Menlo" class="">[ OK ] ClangdVFSTest.ReparseOnHeaderChange (65 ms)</font></div><div class=""><font face="Menlo" class="">[ RUN ] ClangdVFSTest.CheckVersions</font></div><div class=""><font face="Menlo" class="">.../tools/extra/clangd/FuzzyMatch.cpp:78:27: runtime error: division by zero</font></div><div class=""><div class=""><font face="Menlo" class="">SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior .../tools/extra/clangd/FuzzyMatch.cpp:78:27 in</font></div><div class=""><font face="Menlo" class="">Abort trap: 6</font></div></div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Michael</div><div><br class=""><blockquote type="cite" class=""><div class="">On Jan 12, 2018, at 10:30 AM, Sam McCall via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Author: sammccall<br class="">Date: Fri Jan 12 10:30:08 2018<br class="">New Revision: 322387<br class=""><br class="">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=322387&view=rev" class="">http://llvm.org/viewvc/llvm-project?rev=322387&view=rev</a><br class="">Log:<br class="">[clangd] Code completion uses Sema for NS-level things in the current file.<br class=""><br class="">Summary:<br class="">To stay fast, it avoids deserializing anything outside the current file, by<br class="">disabling the LoadExternal code completion option added in r322377, when the<br class="">index is enabled.<br class=""><br class="">Reviewers: hokein<br class=""><br class="">Subscribers: klimek, ilya-biryukov, cfe-commits<br class=""><br class="">Differential Revision: <a href="https://reviews.llvm.org/D41996" class="">https://reviews.llvm.org/D41996</a><br class=""><br class="">Modified:<br class=""> clang-tools-extra/trunk/clangd/CodeComplete.cpp<br class=""> clang-tools-extra/trunk/clangd/index/FileIndex.cpp<br class=""> clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp<br class=""><br class="">Modified: clang-tools-extra/trunk/clangd/CodeComplete.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/CodeComplete.cpp?rev=322387&r1=322386&r2=322387&view=diff" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/CodeComplete.cpp?rev=322387&r1=322386&r2=322387&view=diff</a><br class="">==============================================================================<br class="">--- clang-tools-extra/trunk/clangd/CodeComplete.cpp (original)<br class="">+++ clang-tools-extra/trunk/clangd/CodeComplete.cpp Fri Jan 12 10:30:08 2018<br class="">@@ -642,8 +642,10 @@ clang::CodeCompleteOptions CodeCompleteO<br class=""> Result.IncludeGlobals = IncludeGlobals;<br class=""> Result.IncludeBriefComments = IncludeBriefComments;<br class=""><br class="">- // Enable index-based code completion when Index is provided.<br class="">- Result.IncludeNamespaceLevelDecls = !Index;<br class="">+ // When an is used, Sema is responsible for completing the main file,<br class="">+ // the index can provide results from the preamble.<br class="">+ // Tell Sema not to deserialize the preamble to look for results.<br class="">+ Result.LoadExternal = !Index;<br class=""><br class=""> return Result;<br class=""> }<br class=""><br class="">Modified: clang-tools-extra/trunk/clangd/index/FileIndex.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/FileIndex.cpp?rev=322387&r1=322386&r2=322387&view=diff" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/FileIndex.cpp?rev=322387&r1=322386&r2=322387&view=diff</a><br class="">==============================================================================<br class="">--- clang-tools-extra/trunk/clangd/index/FileIndex.cpp (original)<br class="">+++ clang-tools-extra/trunk/clangd/index/FileIndex.cpp Fri Jan 12 10:30:08 2018<br class="">@@ -20,6 +20,8 @@ std::unique_ptr<SymbolSlab> indexAST(AST<br class=""> std::shared_ptr<Preprocessor> PP,<br class=""> llvm::ArrayRef<const Decl *> Decls) {<br class=""> SymbolCollector::Options CollectorOpts;<br class="">+ // Code completion gets main-file results from Sema.<br class="">+ // But we leave this option on because features like go-to-definition want it.<br class=""> CollectorOpts.IndexMainFiles = true;<br class=""> auto Collector = std::make_shared<SymbolCollector>(std::move(CollectorOpts));<br class=""> Collector->setPreprocessor(std::move(PP));<br class=""><br class="">Modified: clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp?rev=322387&r1=322386&r2=322387&view=diff" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp?rev=322387&r1=322386&r2=322387&view=diff</a><br class="">==============================================================================<br class="">--- clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp (original)<br class="">+++ clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp Fri Jan 12 10:30:08 2018<br class="">@@ -57,6 +57,7 @@ using ::testing::Contains;<br class=""> using ::testing::Each;<br class=""> using ::testing::ElementsAre;<br class=""> using ::testing::Not;<br class="">+using ::testing::UnorderedElementsAre;<br class=""><br class=""> class IgnoreDiagnostics : public DiagnosticsConsumer {<br class=""> void<br class="">@@ -104,7 +105,7 @@ CompletionList completions(StringRef Tex<br class=""> /*StorePreamblesInMemory=*/true);<br class=""> auto File = getVirtualTestFilePath("foo.cpp");<br class=""> Annotations Test(Text);<br class="">- Server.addDocument(Context::empty(), File, Test.code());<br class="">+ Server.addDocument(Context::empty(), File, Test.code()).wait();<br class=""> auto CompletionList =<br class=""> Server.codeComplete(Context::empty(), File, Test.point(), Opts)<br class=""> .get()<br class="">@@ -506,11 +507,11 @@ TEST(CompletionTest, NoIndex) {<br class=""> Opts.Index = nullptr;<br class=""><br class=""> auto Results = completions(R"cpp(<br class="">- namespace ns { class No {}; }<br class="">+ namespace ns { class Local {}; }<br class=""> void f() { ns::^ }<br class=""> )cpp",<br class=""> Opts);<br class="">- EXPECT_THAT(Results.items, Has("No"));<br class="">+ EXPECT_THAT(Results.items, Has("Local"));<br class=""> }<br class=""><br class=""> TEST(CompletionTest, StaticAndDynamicIndex) {<br class="">@@ -538,13 +539,13 @@ TEST(CompletionTest, SimpleIndexBased) {<br class=""> Opts.Index = I.get();<br class=""><br class=""> auto Results = completions(R"cpp(<br class="">- namespace ns { class No {}; }<br class="">+ namespace ns { int local; }<br class=""> void f() { ns::^ }<br class=""> )cpp",<br class=""> Opts);<br class=""> EXPECT_THAT(Results.items, Has("XYZ", CompletionItemKind::Class));<br class=""> EXPECT_THAT(Results.items, Has("foo", CompletionItemKind::Function));<br class="">- EXPECT_THAT(Results.items, Not(Has("No")));<br class="">+ EXPECT_THAT(Results.items, Has("local"));<br class=""> }<br class=""><br class=""> TEST(CompletionTest, IndexBasedWithFilter) {<br class="">@@ -585,6 +586,41 @@ TEST(CompletionTest, FullyQualifiedScope<br class=""> EXPECT_THAT(Results.items, Has("XYZ", CompletionItemKind::Class));<br class=""> }<br class=""><br class="">+TEST(CompletionTest, IndexSuppressesPreambleCompletions) {<br class="">+ MockFSProvider FS;<br class="">+ MockCompilationDatabase CDB;<br class="">+ IgnoreDiagnostics DiagConsumer;<br class="">+ ClangdServer Server(CDB, DiagConsumer, FS, getDefaultAsyncThreadsCount(),<br class="">+ /*StorePreamblesInMemory=*/true);<br class="">+<br class="">+ FS.Files[getVirtualTestFilePath("bar.h")] =<br class="">+ R"cpp(namespace ns { int preamble; })cpp";<br class="">+ auto File = getVirtualTestFilePath("foo.cpp");<br class="">+ Annotations Test(R"cpp(<br class="">+ #include "bar.h"<br class="">+ namespace ns { int local; }<br class="">+ void f() { ns::^ }<br class="">+ )cpp");<br class="">+ Server.addDocument(Context::empty(), File, Test.code()).wait();<br class="">+ clangd::CodeCompleteOptions Opts = {};<br class="">+<br class="">+ auto WithoutIndex =<br class="">+ Server.codeComplete(Context::empty(), File, Test.point(), Opts)<br class="">+ .get()<br class="">+ .second.Value;<br class="">+ EXPECT_THAT(WithoutIndex.items,<br class="">+ UnorderedElementsAre(Named("local"), Named("preamble")));<br class="">+<br class="">+ auto I = simpleIndexFromSymbols({{"ns::index", index::SymbolKind::Variable}});<br class="">+ Opts.Index = I.get();<br class="">+ auto WithIndex =<br class="">+ Server.codeComplete(Context::empty(), File, Test.point(), Opts)<br class="">+ .get()<br class="">+ .second.Value;<br class="">+ EXPECT_THAT(WithIndex.items,<br class="">+ UnorderedElementsAre(Named("local"), Named("index")));<br class="">+}<br class="">+<br class=""> TEST(CompletionTest, ASTIndexMultiFile) {<br class=""> MockFSProvider FS;<br class=""> MockCompilationDatabase CDB;<br class=""><br class=""><br class="">_______________________________________________<br class="">cfe-commits mailing list<br class=""><a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits<br class=""></div></div></blockquote></div><br class=""></div></body></html>