[clang-tools-extra] 10c8dbc - [clangd] Propogate context in TUScheduler::run
Kadir Cetinkaya via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 23 06:31:32 PDT 2019
Author: Kadir Cetinkaya
Date: 2019-10-23T15:31:24+02:00
New Revision: 10c8dbcb840c744002a824950e8293ef0a1fd61a
URL: https://github.com/llvm/llvm-project/commit/10c8dbcb840c744002a824950e8293ef0a1fd61a
DIFF: https://github.com/llvm/llvm-project/commit/10c8dbcb840c744002a824950e8293ef0a1fd61a.diff
LOG: [clangd] Propogate context in TUScheduler::run
Reviewers: sammccall
Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D69328
Added:
Modified:
clang-tools-extra/clangd/TUScheduler.cpp
clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/TUScheduler.cpp b/clang-tools-extra/clangd/TUScheduler.cpp
index c9cd7cf0c4e6..6436e7a50c61 100644
--- a/clang-tools-extra/clangd/TUScheduler.cpp
+++ b/clang-tools-extra/clangd/TUScheduler.cpp
@@ -44,6 +44,7 @@
#include "TUScheduler.h"
#include "Cancellation.h"
#include "Compiler.h"
+#include "Context.h"
#include "Diagnostics.h"
#include "GlobalCompilationDatabase.h"
#include "Logger.h"
@@ -919,7 +920,11 @@ void TUScheduler::run(llvm::StringRef Name,
llvm::unique_function<void()> Action) {
if (!PreambleTasks)
return Action();
- PreambleTasks->runAsync(Name, std::move(Action));
+ PreambleTasks->runAsync(Name, [Ctx = Context::current().clone(),
+ Action = std::move(Action)]() mutable {
+ WithContext WC(std::move(Ctx));
+ Action();
+ });
}
void TUScheduler::runWithAST(
diff --git a/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp b/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
index db05c70aa733..e34ce0bcd3c5 100644
--- a/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
+++ b/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
@@ -688,6 +688,15 @@ TEST_F(TUSchedulerTests, Run) {
S.run("add 2", [&] { Counter += 2; });
ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10)));
EXPECT_EQ(Counter.load(), 3);
+
+ Notification TaskRun;
+ Key<int> TestKey;
+ WithContextValue CtxWithKey(TestKey, 10);
+ S.run("props context", [&] {
+ EXPECT_EQ(Context::current().getExisting(TestKey), 10);
+ TaskRun.notify();
+ });
+ TaskRun.wait();
}
TEST_F(TUSchedulerTests, TUStatus) {
More information about the cfe-commits
mailing list