Skip to content

Commit f32ec43

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 f32ec43

File tree

3 files changed

+48
-34
lines changed

3 files changed

+48
-34
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
--

scripts/delete_failing_smt2_solver_tests

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ rm Array_operations1/test.desc
88
rm BV_Arithmetic6/test.desc
99
rm Bitfields1/test.desc
1010
rm Bitfields3/test.desc
11+
rm Boolean_Guards1/test.desc
12+
rm Computed-Goto1/test.desc
1113
rm Division2/test.desc
12-
rm Double-to-float-no-simp1/test.desc
13-
rm Double-to-float-no-simp1-fix1/test.desc
14-
rm Double-to-float-no-simp1-fix2/test.desc
1514
rm Empty_struct1/test.desc
1615
rm Endianness3/test.desc
1716
rm Endianness4/test.desc
@@ -20,33 +19,20 @@ rm Endianness7/test.desc
2019
rm Fixedbv3/test.desc
2120
rm Fixedbv5/test.desc
2221
rm Fixedbv6/test.desc
23-
rm Float-Rounding1/test.desc
24-
rm Float-div1/test.desc
25-
rm Float-div2/test.desc
26-
rm Float-div3/test.desc
27-
rm Float-flags-no-simp1/test.desc
28-
rm Float-flags-simp1/test.desc
2922
rm Float-no-simp1/test.desc
3023
rm Float-no-simp2/test.desc
3124
rm Float-no-simp3/test.desc
3225
rm Float-no-simp4/test.desc
3326
rm Float-no-simp5/test.desc
3427
rm Float-no-simp6/test.desc
3528
rm Float-no-simp7/test.desc
36-
rm Float-no-simp8/test.desc
37-
rm Float-no-simp9/test.desc
38-
rm Float-smt2-1/test.desc
39-
rm Float-to-double1/test.desc
4029
rm Float-to-double2/test.desc
41-
rm Float-to-int1/test.desc
4230
rm Float-to-int2/test.desc
4331
rm Float-to-int3/test.desc
4432
rm Float-zero-sum1/test.desc
4533
rm Float12/test.desc
4634
rm Float13/test.desc
47-
rm Float19/test.desc
4835
rm Float20/test.desc
49-
rm Float21/test.desc
5036
rm Float22/test.desc
5137
rm Float23/test.desc
5238
rm Float24/test.desc
@@ -61,27 +47,32 @@ rm Function_Pointer3/test.desc
6147
rm Initialization6/test.desc
6248
rm Linking4/test.desc
6349
rm Linking7/test.desc
50+
rm Local_out_of_scope3/test.desc
6451
rm Malloc17/test.desc
6552
rm Malloc18/test.desc
6653
rm Malloc19/test.desc
67-
rm Malloc20/test.desc
6854
rm Malloc21/test.desc
6955
rm Malloc23/test.desc
7056
rm Malloc24/test.desc
71-
rm Memmove1/test.desc
7257
rm Memory_leak1/test.desc
7358
rm Memory_leak2/test.desc
59+
rm Multi_Dimensional_Array1/test.desc
7460
rm Multi_Dimensional_Array2/test.desc
61+
rm Multi_Dimensional_Array3/test.desc
7562
rm Multi_Dimensional_Array4/test.desc
7663
rm Multi_Dimensional_Array6/test.desc
7764
rm Multiple_Properties1/test.desc
7865
rm Overflow_Leftshift1/test.desc
7966
rm Overflow_Subtraction1/test.desc
67+
rm Pointer_Arithmetic1/test.desc
8068
rm Pointer_Arithmetic10/test.desc
8169
rm Pointer_Arithmetic11/test.desc
8270
rm Pointer_Arithmetic12/test.desc
8371
rm Pointer_Arithmetic6/test.desc
72+
rm Pointer_array3/test.desc
73+
rm Pointer_array4/test.desc
8474
rm Pointer_array5/test.desc
75+
rm Pointer_array6/test.desc
8576
rm Pointer_byte_extract2/test.desc
8677
rm Pointer_byte_extract3/test.desc
8778
rm Pointer_byte_extract4/test.desc
@@ -105,7 +96,7 @@ rm Quantifiers-two-dimension-array/test.desc
10596
rm Quantifiers-type/test.desc
10697
rm Quantifiers1/test.desc
10798
rm Recursion5/test.desc
108-
rm String6/test.desc
99+
rm String2/test.desc
109100
rm Struct_Bytewise1/test.desc
110101
rm Struct_Bytewise2/test.desc
111102
rm Struct_Initialization2/test.desc
@@ -140,14 +131,13 @@ rm equality_through_array_of_struct3/test.desc
140131
rm equality_through_array_of_struct4/test.desc
141132
rm equality_through_struct_containing_arrays1/test.desc
142133
rm equality_through_struct_containing_arrays2/test.desc
143-
rm equality_through_struct_containing_arrays3/test.desc
144134
rm equality_through_union1/test.desc
145135
rm equality_through_union2/test.desc
146136
rm equality_through_union3/test.desc
147-
rm fgets1/test.desc
148137
rm full_slice1/test.desc
149138
rm full_slice2/test.desc
150139
rm gcc_bswap1/test.desc
140+
rm gcc_c99-bool-1/test.desc
151141
rm gcc_statement_expression4/test.desc
152142
rm gcc_switch_case_range1/test.desc
153143
rm gcc_switch_case_range2/test.desc
@@ -157,31 +147,27 @@ rm graphml_witness1/test.desc
157147
rm havoc_object1/test.desc
158148
rm hex_trace/test.desc
159149
rm if2/test.desc
160-
rm inet_endian1/test.desc
161-
rm int-to-float2/test.desc
162150
rm integer-assignments1/test.desc
163151
rm little-endian-array1/test.desc
164152
rm memory_allocation1/test.desc
153+
rm memset1/test.desc
165154
rm memset3/test.desc
166155
rm mm_io1/test.desc
167-
rm nested_label1/test.desc
168156
rm no_nondet_static/test.desc
169-
rm pipe1/test.desc
157+
rm null1/test.desc
170158
rm pointer-function-parameters/test.desc
171159
rm pointer-function-parameters-2/test.desc
172-
rm read1/test.desc
173-
rm realloc1/test.desc
174-
rm realloc2/test.desc
175160
rm scanf1/test.desc
176161
rm simple_assert/test.desc
177162
rm stack-trace/test.desc
178-
rm strcat1/test.desc
179163
rm struct10/test.desc
180164
rm struct6/test.desc
181165
rm struct7/test.desc
182166
rm struct9/test.desc
183167
rm trace-values/trace-values.desc
184168
rm trace_address_arithmetic1/test.desc
169+
rm trace_options_json_extended/extended.desc
170+
rm trace_options_json_extended/non-extended.desc
185171
rm trace_show_function_calls/test.desc
186172
rm uncaught_exceptions_analysis1/test.desc
187173
rm uniform_array1/test.desc
@@ -192,6 +178,7 @@ rm union7/test.desc
192178
rm union8/test.desc
193179
rm union9/test.desc
194180
rm unsigned___int128/test.desc
181+
rm variable-access-to-constant-array/test.desc
195182
rm void_pointer2/test.desc
196183
rm void_pointer3/test.desc
197184
rm void_pointer4/test.desc

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)