From 3a5e18b1a135d86e2bab6108230046eb16e351c3 Mon Sep 17 00:00:00 2001 From: Boaz Brickner Date: Thu, 20 Mar 2025 19:37:25 +0100 Subject: [PATCH] In C++ interop, stop referring to the diagnostics consumer before deleting it (#5149) Part of #4666 --- toolchain/check/import_cpp.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/toolchain/check/import_cpp.cpp b/toolchain/check/import_cpp.cpp index 83c833769a88..8656266f4d56 100644 --- a/toolchain/check/import_cpp.cpp +++ b/toolchain/check/import_cpp.cpp @@ -70,6 +70,9 @@ static auto GenerateAst(Context& context, llvm::StringRef importing_file_path, "clang-tool", std::make_shared(), clang::tooling::getClangStripDependencyFileAdjuster(), clang::tooling::FileContentMappings(), &diagnostics_consumer, fs); + // Remove link to the diagnostics consumer before its deletion. + ast->getDiagnostics().setClient(nullptr); + // TODO: Implement and use a DynamicRecursiveASTVisitor to traverse the AST. int num_errors = diagnostics_consumer.getNumErrors(); int num_warnings = diagnostics_consumer.getNumWarnings();