Support non-owned DiagnosticConsumer in SetupSerializedDiagnostics
This fixes an assertion when running clang-tidy on a file having --serialize-diagnostics in compiler options. Committing a regression test for clang-tidy separately. Patch by Aaron Wishnick! llvm-svn: 221884
This commit is contained in:
@@ -170,10 +170,14 @@ static void SetupSerializedDiagnostics(DiagnosticOptions *DiagOpts,
|
||||
auto SerializedConsumer =
|
||||
clang::serialized_diags::create(OutputFile, DiagOpts);
|
||||
|
||||
assert(Diags.ownsClient());
|
||||
Diags.setClient(new ChainedDiagnosticConsumer(
|
||||
std::unique_ptr<DiagnosticConsumer>(Diags.takeClient()),
|
||||
std::move(SerializedConsumer)));
|
||||
if (Diags.ownsClient()) {
|
||||
Diags.setClient(new ChainedDiagnosticConsumer(
|
||||
std::unique_ptr<DiagnosticConsumer>(Diags.takeClient()),
|
||||
std::move(SerializedConsumer)));
|
||||
} else {
|
||||
Diags.setClient(new ChainedDiagnosticConsumer(
|
||||
Diags.takeClient(), std::move(SerializedConsumer)));
|
||||
}
|
||||
}
|
||||
|
||||
void CompilerInstance::createDiagnostics(DiagnosticConsumer *Client,
|
||||
|
||||
Reference in New Issue
Block a user