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));
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));
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits