[PATCH] D146116: [clangd] Respect WantDiags when emitting diags from possibly stale preambles
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 15 01:13:16 PDT 2023
kadircet created this revision.
kadircet added a reviewer: hokein.
Herald added subscribers: arphaman, javed.absar.
Herald added a project: All.
kadircet requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay, ilya-biryukov.
Herald added a project: clang-tools-extra.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D146116
Files:
clang-tools-extra/clangd/TUScheduler.cpp
clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
Index: clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
+++ clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp
@@ -1309,6 +1309,13 @@
// Make sure that we have eventual consistency.
EXPECT_THAT(Collector.diagVersions().back(), Pair(PI.Version, PI.Version));
+
+ // Check that WantDiagnostics::No doesn't emit any diags.
+ PI.Version = "4";
+ PI.Contents = "#define FOO\n" + PI.Version;
+ S.update(File, PI, WantDiagnostics::No);
+ S.blockUntilIdle(timeoutSeconds(5));
+ EXPECT_THAT(Collector.diagVersions().back(), Pair("3", "3"));
}
// If a header file is missing from the CDB (or inferred using heuristics), and
Index: clang-tools-extra/clangd/TUScheduler.cpp
===================================================================
--- clang-tools-extra/clangd/TUScheduler.cpp
+++ clang-tools-extra/clangd/TUScheduler.cpp
@@ -948,7 +948,8 @@
// rebuild. Newly built preamble cannot emit diagnostics before this call
// finishes (ast callbacks are called from astpeer thread), hence we
// gurantee eventual consistency.
- if (LatestPreamble && Config::current().Diagnostics.AllowStalePreamble)
+ if (LatestPreamble && WantDiags != WantDiagnostics::No &&
+ Config::current().Diagnostics.AllowStalePreamble)
generateDiagnostics(std::move(Invocation), std::move(Inputs),
std::move(CompilerInvocationDiags));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146116.505389.patch
Type: text/x-patch
Size: 1524 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230315/b2e92613/attachment-0001.bin>
More information about the cfe-commits
mailing list