summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/ClangdServer.cpp
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2017-10-10 16:12:54 +0000
committerIlya Biryukov <ibiryukov@google.com>2017-10-10 16:12:54 +0000
commit98a1fd7f96cdabfff1c0b9b5448423f3cf2ac1d5 (patch)
tree4b1c53a2f397aef1c5f323b5d50cefad9d869a04 /clang-tools-extra/clangd/ClangdServer.cpp
parenteab499d31b27ebe028896ac90b4ef56e6f7e5acd (diff)
downloadbcm5719-llvm-98a1fd7f96cdabfff1c0b9b5448423f3cf2ac1d5.tar.gz
bcm5719-llvm-98a1fd7f96cdabfff1c0b9b5448423f3cf2ac1d5.zip
[clangd] Use UniqueFunction for deferred computations.
Previsouly, `std::future` that were results of `std::async(std::launch::deferred, ...` were used. llvm-svn: 315325
Diffstat (limited to 'clang-tools-extra/clangd/ClangdServer.cpp')
-rw-r--r--clang-tools-extra/clangd/ClangdServer.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp
index f24b4c5fe45..0af9e6fe003 100644
--- a/clang-tools-extra/clangd/ClangdServer.cpp
+++ b/clang-tools-extra/clangd/ClangdServer.cpp
@@ -413,8 +413,9 @@ std::future<void> ClangdServer::scheduleReparseAndDiags(
Tagged<IntrusiveRefCntPtr<vfs::FileSystem>> TaggedFS) {
assert(Contents.Draft && "Draft must have contents");
- std::future<llvm::Optional<std::vector<DiagWithFixIts>>> DeferredRebuild =
- Resources->deferRebuild(*Contents.Draft, TaggedFS.Value);
+ UniqueFunction<llvm::Optional<std::vector<DiagWithFixIts>>()>
+ DeferredRebuild =
+ Resources->deferRebuild(*Contents.Draft, TaggedFS.Value);
std::promise<void> DonePromise;
std::future<void> DoneFuture = DonePromise.get_future();
@@ -423,7 +424,7 @@ std::future<void> ClangdServer::scheduleReparseAndDiags(
VFSTag Tag = TaggedFS.Tag;
auto ReparseAndPublishDiags =
[this, FileStr, Version,
- Tag](std::future<llvm::Optional<std::vector<DiagWithFixIts>>>
+ Tag](UniqueFunction<llvm::Optional<std::vector<DiagWithFixIts>>()>
DeferredRebuild,
std::promise<void> DonePromise) -> void {
FulfillPromiseGuard Guard(DonePromise);
@@ -432,7 +433,7 @@ std::future<void> ClangdServer::scheduleReparseAndDiags(
if (CurrentVersion != Version)
return; // This request is outdated
- auto Diags = DeferredRebuild.get();
+ auto Diags = DeferredRebuild();
if (!Diags)
return; // A new reparse was requested before this one completed.
@@ -467,11 +468,11 @@ ClangdServer::scheduleCancelRebuild(std::shared_ptr<CppFile> Resources) {
return DoneFuture;
}
- std::future<void> DeferredCancel = Resources->deferCancelRebuild();
+ UniqueFunction<void()> DeferredCancel = Resources->deferCancelRebuild();
auto CancelReparses = [Resources](std::promise<void> DonePromise,
- std::future<void> DeferredCancel) {
+ UniqueFunction<void()> DeferredCancel) {
FulfillPromiseGuard Guard(DonePromise);
- DeferredCancel.get();
+ DeferredCancel();
};
WorkScheduler.addToFront(std::move(CancelReparses), std::move(DonePromise),
std::move(DeferredCancel));
OpenPOWER on IntegriCloud