summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-11-30 08:41:34 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-11-30 08:41:34 +0000
commit05762b1344d40e7201c6be69891222cb632416b6 (patch)
tree3bf368474678c0a59b96cb53ede5023ffc69a936
parent8c317acd2b6ae335aa30e7f57e1932dfca89a32e (diff)
downloadbcm5719-llvm-05762b1344d40e7201c6be69891222cb632416b6.tar.gz
bcm5719-llvm-05762b1344d40e7201c6be69891222cb632416b6.zip
Add TextDiagnosticBuffer::FlushDiagnostics, for forwarding the buffered diagnostics to a different diagnostics engine.
llvm-svn: 90125
-rw-r--r--clang/include/clang/Frontend/TextDiagnosticBuffer.h4
-rw-r--r--clang/lib/Frontend/TextDiagnosticBuffer.cpp10
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/include/clang/Frontend/TextDiagnosticBuffer.h b/clang/include/clang/Frontend/TextDiagnosticBuffer.h
index 4e907e1965e..380a1dd224a 100644
--- a/clang/include/clang/Frontend/TextDiagnosticBuffer.h
+++ b/clang/include/clang/Frontend/TextDiagnosticBuffer.h
@@ -41,6 +41,10 @@ public:
virtual void HandleDiagnostic(Diagnostic::Level DiagLevel,
const DiagnosticInfo &Info);
+
+ /// FlushDiagnostics - Flush the buffered diagnostics to an given
+ /// diagnostic engine.
+ void FlushDiagnostics(Diagnostic &Diags) const;
};
} // end namspace clang
diff --git a/clang/lib/Frontend/TextDiagnosticBuffer.cpp b/clang/lib/Frontend/TextDiagnosticBuffer.cpp
index 07a281e3c7f..fdf2ec8ccf5 100644
--- a/clang/lib/Frontend/TextDiagnosticBuffer.cpp
+++ b/clang/lib/Frontend/TextDiagnosticBuffer.cpp
@@ -36,3 +36,13 @@ void TextDiagnosticBuffer::HandleDiagnostic(Diagnostic::Level Level,
break;
}
}
+
+void TextDiagnosticBuffer::FlushDiagnostics(Diagnostic &Diags) const {
+ // FIXME: Flush the diagnostics in order.
+ for (const_iterator it = err_begin(), ie = err_end(); it != ie; ++it)
+ Diags.Report(Diags.getCustomDiagID(Diagnostic::Error, it->second.c_str()));
+ for (const_iterator it = warn_begin(), ie = warn_end(); it != ie; ++it)
+ Diags.Report(Diags.getCustomDiagID(Diagnostic::Warning,it->second.c_str()));
+ for (const_iterator it = note_begin(), ie = note_end(); it != ie; ++it)
+ Diags.Report(Diags.getCustomDiagID(Diagnostic::Note, it->second.c_str()));
+}
OpenPOWER on IntegriCloud