summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/ClangdServer.cpp
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2018-10-25 14:19:14 +0000
committerSam McCall <sam.mccall@gmail.com>2018-10-25 14:19:14 +0000
commit6d4eb46d0c1c20352bdca65925bef0024b7d12b2 (patch)
treeb6c440ca3febc61e1088722f2a6f9ba6fe6f8685 /clang-tools-extra/clangd/ClangdServer.cpp
parent3e4ee14d58133a798039bfdd6534a6cd7411b046 (diff)
downloadbcm5719-llvm-6d4eb46d0c1c20352bdca65925bef0024b7d12b2.tar.gz
bcm5719-llvm-6d4eb46d0c1c20352bdca65925bef0024b7d12b2.zip
[clangd] workspace/symbol should be async, it reads from the index.
Summary: To enable this, TUScheduler has to provide a way to run async tasks without needing a preamble or AST! Reviewers: ilya-biryukov Subscribers: javed.absar, ioeric, MaskRay, jkorous, arphaman, jfb, kadircet, cfe-commits Differential Revision: https://reviews.llvm.org/D53644 llvm-svn: 345268
Diffstat (limited to 'clang-tools-extra/clangd/ClangdServer.cpp')
-rw-r--r--clang-tools-extra/clangd/ClangdServer.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp
index cd1fb33efe6..8da5dec414f 100644
--- a/clang-tools-extra/clangd/ClangdServer.cpp
+++ b/clang-tools-extra/clangd/ClangdServer.cpp
@@ -482,8 +482,15 @@ void ClangdServer::onFileEvent(const DidChangeWatchedFilesParams &Params) {
void ClangdServer::workspaceSymbols(
StringRef Query, int Limit, Callback<std::vector<SymbolInformation>> CB) {
- CB(clangd::getWorkspaceSymbols(Query, Limit, Index,
- WorkspaceRoot.getValueOr("")));
+ std::string QueryCopy = Query;
+ WorkScheduler.run(
+ "getWorkspaceSymbols",
+ Bind(
+ [QueryCopy, Limit, this](decltype(CB) CB) {
+ CB(clangd::getWorkspaceSymbols(QueryCopy, Limit, Index,
+ WorkspaceRoot.getValueOr("")));
+ },
+ std::move(CB)));
}
void ClangdServer::documentSymbols(
OpenPOWER on IntegriCloud