This revision was automatically updated to reflect the committed changes. Closed by commit rG71c4fb1d6482: [clangd] Set Incompleteness for spec fuzzyfind requests (authored by kadircet).
Changed prior to commit: https://reviews.llvm.org/D133479?vs=458690&id=458774#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D133479/new/ https://reviews.llvm.org/D133479 Files: clang-tools-extra/clangd/CodeComplete.cpp clang-tools-extra/clangd/CodeComplete.h clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp +++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp @@ -2594,7 +2594,8 @@ Opts.Index = &Requests; auto CompleteAtPoint = [&](StringRef P) { - cantFail(runCodeComplete(Server, File, Test.point(P), Opts)); + auto CCR = cantFail(runCodeComplete(Server, File, Test.point(P), Opts)); + EXPECT_TRUE(CCR.HasMore); }; CompleteAtPoint("1"); Index: clang-tools-extra/clangd/CodeComplete.h =================================================================== --- clang-tools-extra/clangd/CodeComplete.h +++ clang-tools-extra/clangd/CodeComplete.h @@ -31,6 +31,7 @@ #include "llvm/ADT/StringRef.h" #include <functional> #include <future> +#include <utility> namespace clang { class NamedDecl; @@ -262,7 +263,7 @@ llvm::Optional<FuzzyFindRequest> NewReq; /// The result is consumed by `codeComplete()` if speculation succeeded. /// NOTE: the destructor will wait for the async call to finish. - std::future<SymbolSlab> Result; + std::future<std::pair<bool /*Incomplete*/, SymbolSlab>> Result; }; /// Gets code completions at a specified \p Pos in \p FileName. Index: clang-tools-extra/clangd/CodeComplete.cpp =================================================================== --- clang-tools-extra/clangd/CodeComplete.cpp +++ clang-tools-extra/clangd/CodeComplete.cpp @@ -70,6 +70,7 @@ #include <algorithm> #include <iterator> #include <limits> +#include <utility> // We log detailed candidate here if you run with -debug-only=codecomplete. #define DEBUG_TYPE "CodeComplete" @@ -1363,13 +1364,14 @@ return true; } -std::future<SymbolSlab> startAsyncFuzzyFind(const SymbolIndex &Index, - const FuzzyFindRequest &Req) { - return runAsync<SymbolSlab>([&Index, Req]() { +std::future<std::pair<bool, SymbolSlab>> +startAsyncFuzzyFind(const SymbolIndex &Index, const FuzzyFindRequest &Req) { + return runAsync<std::pair<bool, SymbolSlab>>([&Index, Req]() { trace::Span Tracer("Async fuzzyFind"); SymbolSlab::Builder Syms; - Index.fuzzyFind(Req, [&Syms](const Symbol &Sym) { Syms.insert(Sym); }); - return std::move(Syms).build(); + bool Incomplete = + Index.fuzzyFind(Req, [&Syms](const Symbol &Sym) { Syms.insert(Sym); }); + return std::make_pair(Incomplete, std::move(Syms).build()); }); } @@ -1721,7 +1723,9 @@ SPAN_ATTACH(Tracer, "Speculative results", true); trace::Span WaitSpec("Wait speculative results"); - return SpecFuzzyFind->Result.get(); + auto SpecRes = SpecFuzzyFind->Result.get(); + Incomplete |= SpecRes.first; + return std::move(SpecRes.second); } SPAN_ATTACH(Tracer, "Speculative results", false);
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp +++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp @@ -2594,7 +2594,8 @@ Opts.Index = &Requests; auto CompleteAtPoint = [&](StringRef P) { - cantFail(runCodeComplete(Server, File, Test.point(P), Opts)); + auto CCR = cantFail(runCodeComplete(Server, File, Test.point(P), Opts)); + EXPECT_TRUE(CCR.HasMore); }; CompleteAtPoint("1"); Index: clang-tools-extra/clangd/CodeComplete.h =================================================================== --- clang-tools-extra/clangd/CodeComplete.h +++ clang-tools-extra/clangd/CodeComplete.h @@ -31,6 +31,7 @@ #include "llvm/ADT/StringRef.h" #include <functional> #include <future> +#include <utility> namespace clang { class NamedDecl; @@ -262,7 +263,7 @@ llvm::Optional<FuzzyFindRequest> NewReq; /// The result is consumed by `codeComplete()` if speculation succeeded. /// NOTE: the destructor will wait for the async call to finish. - std::future<SymbolSlab> Result; + std::future<std::pair<bool /*Incomplete*/, SymbolSlab>> Result; }; /// Gets code completions at a specified \p Pos in \p FileName. Index: clang-tools-extra/clangd/CodeComplete.cpp =================================================================== --- clang-tools-extra/clangd/CodeComplete.cpp +++ clang-tools-extra/clangd/CodeComplete.cpp @@ -70,6 +70,7 @@ #include <algorithm> #include <iterator> #include <limits> +#include <utility> // We log detailed candidate here if you run with -debug-only=codecomplete. #define DEBUG_TYPE "CodeComplete" @@ -1363,13 +1364,14 @@ return true; } -std::future<SymbolSlab> startAsyncFuzzyFind(const SymbolIndex &Index, - const FuzzyFindRequest &Req) { - return runAsync<SymbolSlab>([&Index, Req]() { +std::future<std::pair<bool, SymbolSlab>> +startAsyncFuzzyFind(const SymbolIndex &Index, const FuzzyFindRequest &Req) { + return runAsync<std::pair<bool, SymbolSlab>>([&Index, Req]() { trace::Span Tracer("Async fuzzyFind"); SymbolSlab::Builder Syms; - Index.fuzzyFind(Req, [&Syms](const Symbol &Sym) { Syms.insert(Sym); }); - return std::move(Syms).build(); + bool Incomplete = + Index.fuzzyFind(Req, [&Syms](const Symbol &Sym) { Syms.insert(Sym); }); + return std::make_pair(Incomplete, std::move(Syms).build()); }); } @@ -1721,7 +1723,9 @@ SPAN_ATTACH(Tracer, "Speculative results", true); trace::Span WaitSpec("Wait speculative results"); - return SpecFuzzyFind->Result.get(); + auto SpecRes = SpecFuzzyFind->Result.get(); + Incomplete |= SpecRes.first; + return std::move(SpecRes.second); } SPAN_ATTACH(Tracer, "Speculative results", false);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits