Author: Kadir Cetinkaya Date: 2021-05-11T08:22:24+02:00 New Revision: 888307ee625b50b060317e2100fb16e0be2626b7
URL: https://github.com/llvm/llvm-project/commit/888307ee625b50b060317e2100fb16e0be2626b7 DIFF: https://github.com/llvm/llvm-project/commit/888307ee625b50b060317e2100fb16e0be2626b7.diff LOG: [clangd][remote-client] Set HasMore to true for failure Currently client was setting the HasMore to true iff stream said so. Hence if we had a broken stream for whatever reason (e.g. hitting deadline for a huge response), HasMore would be false, which is semantically incorrect (e.g. will throw rename off). Differential Revision: https://reviews.llvm.org/D101915 Added: Modified: clang-tools-extra/clangd/index/remote/Client.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/index/remote/Client.cpp b/clang-tools-extra/clangd/index/remote/Client.cpp index 84eb2de259b9..b92c6520f61c 100644 --- a/clang-tools-extra/clangd/index/remote/Client.cpp +++ b/clang-tools-extra/clangd/index/remote/Client.cpp @@ -64,7 +64,10 @@ class IndexClient : public clangd::SymbolIndex { StreamingCall<RequestT, ReplyT> RPCCall, CallbackT Callback) const { updateConnectionStatus(); - bool FinalResult = false; + // We initialize to true because stream might be broken before we see the + // final message. In such a case there are actually more results on the + // stream, but we couldn't get to them. + bool HasMore = true; trace::Span Tracer(RequestT::descriptor()->name()); const auto RPCRequest = ProtobufMarshaller->toProtobuf(Request); SPAN_ATTACH(Tracer, "Request", RPCRequest.DebugString()); @@ -82,7 +85,7 @@ class IndexClient : public clangd::SymbolIndex { unsigned FailedToParse = 0; while (Reader->Read(&Reply)) { if (!Reply.has_stream_result()) { - FinalResult = Reply.final_result().has_more(); + HasMore = Reply.final_result().has_more(); continue; } auto Response = ProtobufMarshaller->fromProtobuf(Reply.stream_result()); @@ -105,7 +108,7 @@ class IndexClient : public clangd::SymbolIndex { SPAN_ATTACH(Tracer, "Successful", Successful); SPAN_ATTACH(Tracer, "Failed to parse", FailedToParse); updateConnectionStatus(); - return FinalResult; + return HasMore; } public: _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits