summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/ClangDMain.cpp7
-rw-r--r--clang-tools-extra/clangd/JSONRPCDispatcher.h7
-rw-r--r--clang-tools-extra/clangd/ProtocolHandlers.h7
3 files changed, 10 insertions, 11 deletions
diff --git a/clang-tools-extra/clangd/ClangDMain.cpp b/clang-tools-extra/clangd/ClangDMain.cpp
index 6ebdb63a044..53762b18935 100644
--- a/clang-tools-extra/clangd/ClangDMain.cpp
+++ b/clang-tools-extra/clangd/ClangDMain.cpp
@@ -30,8 +30,9 @@ int main(int argc, char *argv[]) {
JSONRPCDispatcher Dispatcher(llvm::make_unique<Handler>(Out));
Dispatcher.registerHandler("initialize",
llvm::make_unique<InitializeHandler>(Out));
- Dispatcher.registerHandler("shutdown",
- llvm::make_unique<ShutdownHandler>(Out));
+ auto ShutdownPtr = llvm::make_unique<ShutdownHandler>(Out);
+ auto *ShutdownHandler = ShutdownPtr.get();
+ Dispatcher.registerHandler("shutdown",std::move(ShutdownPtr));
Dispatcher.registerHandler(
"textDocument/didOpen",
llvm::make_unique<TextDocumentDidOpenHandler>(Out, Store));
@@ -92,7 +93,7 @@ int main(int argc, char *argv[]) {
Logs << "JSON dispatch failed!\n";
// If we're done, exit the loop.
- if (Out.isDone())
+ if (ShutdownHandler->isDone())
break;
}
}
diff --git a/clang-tools-extra/clangd/JSONRPCDispatcher.h b/clang-tools-extra/clangd/JSONRPCDispatcher.h
index d7a026bd365..60f81031e62 100644
--- a/clang-tools-extra/clangd/JSONRPCDispatcher.h
+++ b/clang-tools-extra/clangd/JSONRPCDispatcher.h
@@ -31,17 +31,10 @@ public:
/// Get the logging stream.
llvm::raw_ostream &logs() { return Logs; }
- /// Use this to indicate that the output stream should be closed and the
- /// process should terminate.
- void setDone() { Done = true; }
- bool isDone() const { return Done; }
-
private:
llvm::raw_ostream &Outs;
llvm::raw_ostream &Logs;
- bool Done = false;
-
std::mutex StreamMutex;
};
diff --git a/clang-tools-extra/clangd/ProtocolHandlers.h b/clang-tools-extra/clangd/ProtocolHandlers.h
index 918a179b14a..a740a4f073f 100644
--- a/clang-tools-extra/clangd/ProtocolHandlers.h
+++ b/clang-tools-extra/clangd/ProtocolHandlers.h
@@ -42,8 +42,13 @@ struct ShutdownHandler : Handler {
ShutdownHandler(JSONOutput &Output) : Handler(Output) {}
void handleMethod(llvm::yaml::MappingNode *Params, StringRef ID) override {
- Output.setDone();
+ IsDone = true;
}
+
+ bool isDone() const { return IsDone; }
+
+private:
+ bool IsDone = false;
};
struct TextDocumentDidOpenHandler : Handler {
OpenPOWER on IntegriCloud