diff options
| author | Ilya Biryukov <ibiryukov@google.com> | 2017-10-10 16:12:54 +0000 |
|---|---|---|
| committer | Ilya Biryukov <ibiryukov@google.com> | 2017-10-10 16:12:54 +0000 |
| commit | 98a1fd7f96cdabfff1c0b9b5448423f3cf2ac1d5 (patch) | |
| tree | 4b1c53a2f397aef1c5f323b5d50cefad9d869a04 /clang-tools-extra/clangd/ClangdServer.cpp | |
| parent | eab499d31b27ebe028896ac90b4ef56e6f7e5acd (diff) | |
| download | bcm5719-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.cpp | 15 |
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)); |

