llvm-project/clang-tools-extra
Sam McCall 818ec5e965 [clangd] Refactor JSON-over-stdin/stdout code into Transport abstraction.
Summary:
This paves the way for alternative transports (mac XPC, maybe messagepack?),
and also generally improves layering: testing ClangdLSPServer becomes less of
a pipe dream, we split up the JSONOutput monolith, etc.

This isn't a final state, much of what remains in JSONRPCDispatcher can go away,
handlers can call reply() on the transport directly, JSONOutput can be renamed
to StreamLogger and removed, etc. But this patch is sprawling already.

The main observable change (see tests) is that hitting EOF on input is now an
error: the client should send the 'exit' notification.
This is defensible: the protocol doesn't spell this case out. Reproducing the
current behavior for all combinations of shutdown/exit/EOF clutters interfaces.
We can iterate on this if desired.

Reviewers: jkorous, ioeric, hokein

Subscribers: mgorny, ilya-biryukov, MaskRay, arphaman, kadircet, cfe-commits

Differential Revision: https://reviews.llvm.org/D53286

llvm-svn: 344620
2018-10-16 16:48:06 +00:00
..
change-namespace Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
clang-apply-replacements Deduplicate replacements from diagnostics. 2018-09-25 08:24:07 +00:00
clang-doc [clang-doc] Clean up Markdown output 2018-10-04 21:34:13 +00:00
clang-move [clang-move] Remove clang:: qualifier 2018-10-11 16:09:26 +00:00
clang-query [clang-query] Add comment token handling 2018-10-03 08:21:54 +00:00
clang-reorder-fields [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
clang-tidy [Fixed Point Arithmetic] Fix for clang-tools-extra warning 2018-10-15 20:00:03 +00:00
clang-tidy-vs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
clangd [clangd] Refactor JSON-over-stdin/stdout code into Transport abstraction. 2018-10-16 16:48:06 +00:00
docs [clang-tidy] Optimize query in bugprone-exception-escape 2018-10-13 10:34:52 +00:00
include-fixer Replace hardcoded format styles in a few tools with the default style in libFormat. 2018-08-02 10:30:56 +00:00
modularize NFC: Enforce good formatting across multiple clang-tools-extra files 2018-08-14 16:03:32 +00:00
pp-trace [pp-trace] Remove unused using directives 2018-09-18 06:57:58 +00:00
test [clangd] Refactor JSON-over-stdin/stdout code into Transport abstraction. 2018-10-16 16:48:06 +00:00
tool-template Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
unittests [clangd] Refactor JSON-over-stdin/stdout code into Transport abstraction. 2018-10-16 16:48:06 +00:00
.arcconfig [clang-tools-extra] Set up .arcconfig to point to new Diffusion CTE repository 2017-11-27 15:58:25 +00:00
.gitignore
CMakeLists.txt [clang-tidy] Build it even without static analyzer 2018-10-01 20:24:22 +00:00
CODE_OWNERS.TXT Updating the code owners list. 2015-09-02 20:00:41 +00:00
LICENSE.TXT Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
README.txt Update references to new lists.llvm.org mailing lists. 2015-08-05 03:56:44 +00:00

README.txt

//===----------------------------------------------------------------------===//
// Clang Tools repository
//===----------------------------------------------------------------------===//

Welcome to the repository of extra Clang Tools.  This repository holds tools
that are developed as part of the LLVM compiler infrastructure project and the
Clang frontend.  These tools are kept in a separate "extra" repository to
allow lighter weight checkouts of the core Clang codebase.

This repository is only intended to be checked out inside of a full LLVM+Clang
tree, and in the 'tools/extra' subdirectory of the Clang checkout.

All discussion regarding Clang, Clang-based tools, and code in this repository
should be held using the standard Clang mailing lists:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

Code review for this tree should take place on the standard Clang patch and
commit lists:
  http://lists.llvm.org/mailman/listinfo/cfe-commits

If you find a bug in these tools, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/