[clangd][tests] Fix handling of EOF in delimited input
Request in delimited input ended by EOF shouldn't be an error state.
Comments at the end of test file shouldn't be logged as an error state.
Input mirroring should work for the last request in delimited test file.
llvm-svn: 330608
diff --git a/clang-tools-extra/clangd/JSONRPCDispatcher.cpp b/clang-tools-extra/clangd/JSONRPCDispatcher.cpp
index 2cf4da3..1e0f5bc 100644
--- a/clang-tools-extra/clangd/JSONRPCDispatcher.cpp
+++ b/clang-tools-extra/clangd/JSONRPCDispatcher.cpp
@@ -277,21 +277,19 @@
if (LineRef.startswith("#")) // comment
continue;
- bool IsDelim = LineRef.find_first_not_of('-') == llvm::StringRef::npos;
- if (!IsDelim) // Line is part of a JSON message.
- JSON += Line;
- if (IsDelim) {
- Out.mirrorInput(
- llvm::formatv("Content-Length: {0}\r\n\r\n{1}", JSON.size(), JSON));
- return std::move(JSON);
- }
+ // found a delimiter
+ if (LineRef.find_first_not_of('-') == llvm::StringRef::npos)
+ break;
+
+ JSON += Line;
}
if (In.bad()) {
log("Input error while reading message!");
return llvm::None;
} else {
- log("Input message terminated by EOF");
+ Out.mirrorInput(
+ llvm::formatv("Content-Length: {0}\r\n\r\n{1}", JSON.size(), JSON));
return std::move(JSON);
}
}