aboutsummaryrefslogtreecommitdiff
path: root/libcpp/errors.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp/errors.cc')
-rw-r--r--libcpp/errors.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/libcpp/errors.cc b/libcpp/errors.cc
index 5d8ceb9..ad45f61 100644
--- a/libcpp/errors.cc
+++ b/libcpp/errors.cc
@@ -350,3 +350,19 @@ cpp_errno_filename (cpp_reader *pfile, enum cpp_diagnostic_level level,
return cpp_error_at (pfile, level, loc, "%s: %s", filename,
xstrerror (errno));
}
+
+cpp_auto_suppress_diagnostics::cpp_auto_suppress_diagnostics (cpp_reader *pfile)
+ : m_pfile (pfile), m_cb (pfile->cb.diagnostic)
+{
+ m_pfile->cb.diagnostic
+ = [] (cpp_reader *, cpp_diagnostic_level, cpp_warning_reason,
+ rich_location *, const char *, va_list *)
+ {
+ return true;
+ };
+}
+
+cpp_auto_suppress_diagnostics::~cpp_auto_suppress_diagnostics ()
+{
+ m_pfile->cb.diagnostic = m_cb;
+}