[PATCH] D45763: [clangd][tests] Fix handling of EOF in delimited input
Jan Korous via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 18 05:42:24 PDT 2018
jkorous created this revision.
jkorous added a project: clang-tools-extra.
Herald added subscribers: cfe-commits, MaskRay, ioeric, jkorous-apple, ilya-biryukov.
Request in delimited input ended by EOF shouldn't be an error state.
Comments should be allowed at the end of test files.
Input mirroring should work for the last request in delimited test file.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D45763
Files:
JSONRPCDispatcher.cpp
clangd/delimited-input-comment-at-the-end.test
Index: clangd/delimited-input-comment-at-the-end.test
===================================================================
--- /dev/null
+++ clangd/delimited-input-comment-at-the-end.test
@@ -0,0 +1,7 @@
+# RUN: clangd -input-style=delimited -run-synchronously < %s 2>&1 | FileCheck %s
+# RUN: clangd -lit-test -run-synchronously < %s 2>&1 | FileCheck %s
+#
+{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}
+---
+{"jsonrpc":"2.0","id":3,"method":"exit"}
+# CHECK-NOT: Input message terminated by EOF
Index: JSONRPCDispatcher.cpp
===================================================================
--- JSONRPCDispatcher.cpp
+++ 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);
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45763.142916.patch
Type: text/x-patch
Size: 1552 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180418/5d0f68fa/attachment.bin>
More information about the cfe-commits
mailing list