diff options
Diffstat (limited to 'include/clang/Frontend/ChainedDiagnosticConsumer.h')
-rw-r--r-- | include/clang/Frontend/ChainedDiagnosticConsumer.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/include/clang/Frontend/ChainedDiagnosticConsumer.h b/include/clang/Frontend/ChainedDiagnosticConsumer.h index 11762a97cfc4..eb33273c2fb3 100644 --- a/include/clang/Frontend/ChainedDiagnosticConsumer.h +++ b/include/clang/Frontend/ChainedDiagnosticConsumer.h @@ -22,15 +22,20 @@ class LangOptions; /// diagnostics should be included in counts. class ChainedDiagnosticConsumer : public DiagnosticConsumer { virtual void anchor(); - std::unique_ptr<DiagnosticConsumer> Primary; + std::unique_ptr<DiagnosticConsumer> OwningPrimary; + DiagnosticConsumer *Primary; std::unique_ptr<DiagnosticConsumer> Secondary; public: - ChainedDiagnosticConsumer(DiagnosticConsumer *_Primary, - DiagnosticConsumer *_Secondary) { - Primary.reset(_Primary); - Secondary.reset(_Secondary); - } + ChainedDiagnosticConsumer(std::unique_ptr<DiagnosticConsumer> Primary, + std::unique_ptr<DiagnosticConsumer> Secondary) + : OwningPrimary(std::move(Primary)), Primary(OwningPrimary.get()), + Secondary(std::move(Secondary)) {} + + /// \brief Construct without taking ownership of \c Primary. + ChainedDiagnosticConsumer(DiagnosticConsumer *Primary, + std::unique_ptr<DiagnosticConsumer> Secondary) + : Primary(Primary), Secondary(std::move(Secondary)) {} void BeginSourceFile(const LangOptions &LO, const Preprocessor *PP) override { |