3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-06 17:44:08 +00:00

add redirect for warnings

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-08-23 15:55:55 -07:00
parent fbf9e3004f
commit 2f8b13368d
4 changed files with 23 additions and 0 deletions

View file

@ -242,6 +242,7 @@ extern "C" {
std::istringstream is(s);
ctx->set_regular_stream(ous);
ctx->set_diagnostic_stream(ous);
cmd_context::scoped_redirect _redirect(*ctx);
try {
if (!parse_smt2_commands(*ctx.get(), is)) {
SET_ERROR_CODE(Z3_PARSER_ERROR, ous.str());

View file

@ -191,6 +191,22 @@ public:
~scoped_watch() { m_ctx.m_watch.stop(); }
};
struct scoped_redirect {
cmd_context& m_ctx;
std::ostream& m_verbose;
std::ostream* m_warning;
scoped_redirect(cmd_context& ctx): m_ctx(ctx), m_verbose(verbose_stream()), m_warning(warning_stream()) {
set_warning_stream(&(*m_ctx.m_diagnostic));
set_verbose_stream(m_ctx.diagnostic_stream());
}
~scoped_redirect() {
set_verbose_stream(m_verbose);
set_warning_stream(m_warning);
}
};
protected:

View file

@ -83,6 +83,10 @@ void set_warning_stream(std::ostream* strm) {
g_warning_stream = strm;
}
std::ostream* warning_stream() {
return g_warning_stream;
}
void format2ostream(std::ostream & out, char const* msg, va_list args) {
svector<char> buff;
BEGIN_ERR_HANDLER();

View file

@ -28,6 +28,8 @@ void set_error_stream(std::ostream* strm);
void set_warning_stream(std::ostream* strm);
std::ostream* warning_stream();
void warning_msg(const char * msg, ...);
void format2ostream(std::ostream& out, char const* fmt, va_list args);