[PATCH] D83178: [clangd] Send EOF before resetting diagnostics consumer
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 13 09:33:59 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG66a2e3a52564: [clangd] Send EOF before resetting diagnostics consumer (authored by kadircet).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D83178/new/
https://reviews.llvm.org/D83178
Files:
clang-tools-extra/clangd/ParsedAST.cpp
clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
Index: clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
+++ clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
@@ -29,6 +29,8 @@
namespace {
using ::testing::_;
+using ::testing::AllOf;
+using ::testing::Contains;
using ::testing::ElementsAre;
using ::testing::Field;
using ::testing::IsEmpty;
@@ -278,6 +280,23 @@
"use a trailing return type for this function")))));
}
+TEST(DiagnosticsTest, ClangTidyEOF) {
+ // clang-format off
+ Annotations Test(R"cpp(
+ [[#]]include <b.h>
+ #include "a.h")cpp");
+ // clang-format on
+ auto TU = TestTU::withCode(Test.code());
+ TU.ExtraArgs = {"-isystem."};
+ TU.AdditionalFiles["a.h"] = TU.AdditionalFiles["b.h"] = "";
+ TU.ClangTidyChecks = "-*, llvm-include-order";
+ EXPECT_THAT(
+ TU.build().getDiagnostics(),
+ Contains(AllOf(Diag(Test.range(), "#includes are not sorted properly"),
+ DiagSource(Diag::ClangTidy),
+ DiagName("llvm-include-order"))));
+}
+
TEST(DiagnosticTest, TemplatesInHeaders) {
// Diagnostics from templates defined in headers are placed at the expansion.
Annotations Main(R"cpp(
Index: clang-tools-extra/clangd/ParsedAST.cpp
===================================================================
--- clang-tools-extra/clangd/ParsedAST.cpp
+++ clang-tools-extra/clangd/ParsedAST.cpp
@@ -424,15 +424,15 @@
CTFinder.matchAST(Clang->getASTContext());
}
+ // XXX: This is messy: clang-tidy checks flush some diagnostics at EOF.
+ // However Action->EndSourceFile() would destroy the ASTContext!
+ // So just inform the preprocessor of EOF, while keeping everything alive.
+ Clang->getPreprocessor().EndSourceFile();
// UnitDiagsConsumer is local, we can not store it in CompilerInstance that
// has a longer lifetime.
Clang->getDiagnostics().setClient(new IgnoreDiagnostics);
// CompilerInstance won't run this callback, do it directly.
ASTDiags.EndSourceFile();
- // XXX: This is messy: clang-tidy checks flush some diagnostics at EOF.
- // However Action->EndSourceFile() would destroy the ASTContext!
- // So just inform the preprocessor of EOF, while keeping everything alive.
- Clang->getPreprocessor().EndSourceFile();
std::vector<Diag> Diags = CompilerInvocationDiags;
// Add diagnostics from the preamble, if any.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D83178.285406.patch
Type: text/x-patch
Size: 2459 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200813/58f9c25b/attachment.bin>
More information about the cfe-commits
mailing list