@@ -45,7 +45,8 @@ TEST_CASE("\"typet\" to smt sort conversion", "[core][smt2_incremental]")
45
45
46
46
smt_termt convert_expr_to_smt (const exprt &expression)
47
47
{
48
- return convert_expr_to_smt (expression, initial_smt_object_map ());
48
+ return convert_expr_to_smt (
49
+ expression, initial_smt_object_map (), smt_object_sizet{}.make_application );
49
50
}
50
51
51
52
TEST_CASE (" \" symbol_exprt\" to smt term conversion" , " [core][smt2_incremental]" )
@@ -1092,6 +1093,7 @@ TEST_CASE(
1092
1093
config.ansi_c .set_arch_spec_x86_64 ();
1093
1094
const symbol_tablet symbol_table;
1094
1095
const namespacet ns{symbol_table};
1096
+ const smt_object_sizet object_size;
1095
1097
smt_object_mapt object_map = initial_smt_object_map ();
1096
1098
const symbol_exprt foo{" foo" , unsignedbv_typet{32 }};
1097
1099
const symbol_exprt bar{" bar" , unsignedbv_typet{32 }};
@@ -1103,7 +1105,8 @@ TEST_CASE(
1103
1105
SECTION (" 8 object bits" )
1104
1106
{
1105
1107
config.bv_encoding .object_bits = 8 ;
1106
- const auto converted = convert_expr_to_smt (address_of_foo, object_map);
1108
+ const auto converted = convert_expr_to_smt (
1109
+ address_of_foo, object_map, object_size.make_application );
1107
1110
CHECK (object_map.at (foo).unique_id == 1 );
1108
1111
CHECK (
1109
1112
converted == smt_bit_vector_theoryt::concat (
@@ -1113,7 +1116,8 @@ TEST_CASE(
1113
1116
SECTION (" 16 object bits" )
1114
1117
{
1115
1118
config.bv_encoding .object_bits = 16 ;
1116
- const auto converted = convert_expr_to_smt (address_of_foo, object_map);
1119
+ const auto converted = convert_expr_to_smt (
1120
+ address_of_foo, object_map, object_size.make_application );
1117
1121
CHECK (object_map.at (foo).unique_id == 1 );
1118
1122
CHECK (
1119
1123
converted == smt_bit_vector_theoryt::concat (
@@ -1129,15 +1133,17 @@ TEST_CASE(
1129
1133
exprt address_of = address_of_exprt{foo};
1130
1134
address_of.type () = bool_typet{};
1131
1135
REQUIRE_THROWS_MATCHES (
1132
- convert_expr_to_smt (address_of, object_map),
1136
+ convert_expr_to_smt (
1137
+ address_of, object_map, object_size.make_application ),
1133
1138
invariant_failedt,
1134
1139
invariant_failure_containing (
1135
1140
" Result of the address_of operator should have pointer type." ));
1136
1141
}
1137
1142
SECTION (" Objects should already be tracked" )
1138
1143
{
1139
1144
REQUIRE_THROWS_MATCHES (
1140
- convert_expr_to_smt (address_of_exprt{foo}, object_map),
1145
+ convert_expr_to_smt (
1146
+ address_of_exprt{foo}, object_map, object_size.make_application ),
1141
1147
invariant_failedt,
1142
1148
invariant_failure_containing (" Objects should be tracked before "
1143
1149
" converting their address to SMT terms" ));
@@ -1149,7 +1155,8 @@ TEST_CASE(
1149
1155
track_expression_objects (address_of_foo, ns, object_map);
1150
1156
object_map.at (foo).unique_id = 256 ;
1151
1157
REQUIRE_THROWS_MATCHES (
1152
- convert_expr_to_smt (address_of_exprt{foo}, object_map),
1158
+ convert_expr_to_smt (
1159
+ address_of_exprt{foo}, object_map, object_size.make_application ),
1153
1160
invariant_failedt,
1154
1161
invariant_failure_containing (" There should be sufficient bits to "
1155
1162
" encode unique object identifier." ));
@@ -1161,7 +1168,8 @@ TEST_CASE(
1161
1168
track_expression_objects (address_of_foo, ns, object_map);
1162
1169
object_map.at (foo).unique_id = 256 ;
1163
1170
REQUIRE_THROWS_MATCHES (
1164
- convert_expr_to_smt (address_of_exprt{foo}, object_map),
1171
+ convert_expr_to_smt (
1172
+ address_of_exprt{foo}, object_map, object_size.make_application ),
1165
1173
invariant_failedt,
1166
1174
invariant_failure_containing (" Pointer should be wider than object_bits "
1167
1175
" in order to allow for offset encoding." ));
@@ -1174,7 +1182,8 @@ TEST_CASE(
1174
1182
notequal_exprt{address_of_exprt{foo}, address_of_exprt{bar}};
1175
1183
track_expression_objects (comparison, ns, object_map);
1176
1184
INFO (" Expression " + comparison.pretty (1 , 0 ));
1177
- const auto converted = convert_expr_to_smt (comparison, object_map);
1185
+ const auto converted =
1186
+ convert_expr_to_smt (comparison, object_map, object_size.make_application );
1178
1187
CHECK (object_map.at (foo).unique_id == 2 );
1179
1188
CHECK (object_map.at (bar).unique_id == 1 );
1180
1189
CHECK (
0 commit comments