Skip to content

Commit c4e6113

Browse files
author
Daniel Kroening
committed
smt2_solver: SMT2-specific message output
errors get reported as (error "message"); any other output is marked as comment.
1 parent f5eedc4 commit c4e6113

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

regression/smt2_solver/function-applications/function-application2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ function-application2.smt2
33

44
^EXIT=134$
55
^SIGNAL=0$
6-
^line 5: type mismatch in function definition: expected `\(_ BitVec 16\)' but got `\(_ BitVec 8\)'$
6+
^\(error "line 5: type mismatch in function definition: expected `\(_ BitVec 16\)' but got `\(_ BitVec 8\)'"\)$
77
--

src/solvers/smt2/smt2_solver.cpp

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ Author: Daniel Kroening, [email protected]
1111

1212
#include "smt2_parser.h"
1313

14+
#include <util/message.h>
1415
#include <util/namespace.h>
15-
#include <util/symbol_table.h>
16-
#include <util/cout_message.h>
17-
#include <util/simplify_expr.h>
1816
#include <util/replace_symbol.h>
17+
#include <util/simplify_expr.h>
18+
#include <util/symbol_table.h>
1919

2020
#include <solvers/sat/satcheck.h>
2121
#include <solvers/flattening/boolbv.h>
@@ -216,12 +216,39 @@ void smt2_solvert::command(const std::string &c)
216216
}
217217
}
218218

219+
class smt2_message_handlert : public message_handlert
220+
{
221+
public:
222+
void print(unsigned level, const std::string &message) override
223+
{
224+
message_handlert::print(level, message);
225+
226+
if(level < 4) // errors
227+
std::cout << "(error \"" << message << "\")\n";
228+
else
229+
std::cout << "; " << message << '\n';
230+
}
231+
232+
void print(unsigned level, const xmlt &xml) override
233+
{
234+
}
235+
236+
void print(unsigned level, const jsont &json) override
237+
{
238+
}
239+
240+
void flush(unsigned) override
241+
{
242+
std::cout << std::flush;
243+
}
244+
};
245+
219246
int solver(std::istream &in)
220247
{
221248
symbol_tablet symbol_table;
222249
namespacet ns(symbol_table);
223250

224-
console_message_handlert message_handler;
251+
smt2_message_handlert message_handler;
225252
messaget message(message_handler);
226253

227254
// this is our default verbosity

0 commit comments

Comments
 (0)