Index: clangd/CodeComplete.cpp =================================================================== --- clangd/CodeComplete.cpp +++ clangd/CodeComplete.cpp @@ -379,10 +379,6 @@ // Qualified completion ("std::vec^"), we have two cases depending on whether // the qualifier can be resolved by Sema. if ((*SS)->isValid()) { // Resolved qualifier. - // FIXME: Disable Sema typo correction during code completion. - // The resolved qualifier might not perfectly match the written qualifier. - // e.g. "namespace clang { clangd::^ }", we will get "clang" declaration - // for completion "clangd::". return GetAllAccessibleScopes(CCContext).scopesForIndexQuery(); } @@ -678,6 +674,9 @@ auto &DiagOpts = Clang->getDiagnosticOpts(); DiagOpts.IgnoreWarnings = true; + // Disable typo correction in Sema. + Clang->getLangOpts().SpellChecking = false; + auto &FrontendOpts = Clang->getFrontendOpts(); FrontendOpts.SkipFunctionBodies = true; FrontendOpts.CodeCompleteOpts = Options; Index: unittests/clangd/CodeCompleteTests.cpp =================================================================== --- unittests/clangd/CodeCompleteTests.cpp +++ unittests/clangd/CodeCompleteTests.cpp @@ -621,6 +621,14 @@ Doc("Doooc"), Detail("void")))); } +TEST(CodeCompleteTest, DisableTypoCorrection) { + auto Results = completions(R"cpp( + namespace clang { int v; } + void f() { clangd::^ + )cpp"); + EXPECT_TRUE(Results.items.empty()); +} + SignatureHelp signatures(StringRef Text) { MockFSProvider FS; MockCompilationDatabase CDB;