@@ -17,6 +17,7 @@ Author: Diffblue Ltd.
17
17
18
18
#include < goto-programs/allocate_objects.h>
19
19
#include < goto-programs/class_identifier.h>
20
+ #include < goto-programs/goto_instruction_code.h>
20
21
21
22
#include < util/arith_tools.h>
22
23
#include < util/array_element_from_pointer.h>
@@ -345,43 +346,44 @@ assign_primitive_from_json(const exprt &expr, const jsont &json)
345
346
return result;
346
347
if (expr.type () == java_boolean_type ())
347
348
{
348
- result.add (code_assignt {
349
+ result.add (code_frontend_assignt {
349
350
expr, json.is_true () ? (exprt)true_exprt{} : (exprt)false_exprt{}});
350
351
}
351
352
else if (
352
353
expr.type () == java_int_type () || expr.type () == java_byte_type () ||
353
354
expr.type () == java_short_type () || expr.type () == java_long_type ())
354
355
{
355
- result.add (
356
- code_assignt{ expr, from_integer (std::stoll (json.value ), expr.type ())});
356
+ result.add (code_frontend_assignt{
357
+ expr, from_integer (std::stoll (json.value ), expr.type ())});
357
358
}
358
359
else if (expr.type () == java_double_type ())
359
360
{
360
361
ieee_floatt ieee_float (to_floatbv_type (expr.type ()));
361
362
ieee_float.from_double (std::stod (json.value ));
362
- result.add (code_assignt {expr, ieee_float.to_expr ()});
363
+ result.add (code_frontend_assignt {expr, ieee_float.to_expr ()});
363
364
}
364
365
else if (expr.type () == java_float_type ())
365
366
{
366
367
ieee_floatt ieee_float (to_floatbv_type (expr.type ()));
367
368
ieee_float.from_float (std::stof (json.value ));
368
- result.add (code_assignt {expr, ieee_float.to_expr ()});
369
+ result.add (code_frontend_assignt {expr, ieee_float.to_expr ()});
369
370
}
370
371
else if (expr.type () == java_char_type ())
371
372
{
372
373
const std::wstring wide_value = utf8_to_utf16_native_endian (json.value );
373
374
PRECONDITION (wide_value.length () == 1 );
374
- result.add (
375
- code_assignt{ expr, from_integer (wide_value.front (), expr.type ())});
375
+ result.add (code_frontend_assignt{
376
+ expr, from_integer (wide_value.front (), expr.type ())});
376
377
}
377
378
return result;
378
379
}
379
380
380
381
// / One of the base cases of the recursive algorithm. See
381
382
// / \ref assign_from_json_rec.
382
- static code_assignt assign_null (const exprt &expr)
383
+ static code_frontend_assignt assign_null (const exprt &expr)
383
384
{
384
- return code_assignt{expr, null_pointer_exprt{to_pointer_type (expr.type ())}};
385
+ return code_frontend_assignt{
386
+ expr, null_pointer_exprt{to_pointer_type (expr.type ())}};
385
387
}
386
388
387
389
// / In the case of an assignment of an array given a JSON representation, this
@@ -405,7 +407,8 @@ static code_with_references_listt assign_array_data_component_from_json(
405
407
info.allocate_objects .allocate_automatic_local_object (
406
408
data_member_expr.type (), " user_specified_array_data_init" );
407
409
code_with_references_listt result;
408
- result.add (code_assignt{array_init_data, data_member_expr, info.loc });
410
+ result.add (
411
+ code_frontend_assignt{array_init_data, data_member_expr, info.loc });
409
412
410
413
size_t index = 0 ;
411
414
const optionalt<std::string> inferred_element_type =
@@ -432,8 +435,8 @@ nondet_length(allocate_objectst &allocate, source_locationt loc)
432
435
symbol_exprt length_expr = allocate.allocate_automatic_local_object (
433
436
java_int_type (), " user_specified_array_length" );
434
437
code_with_references_listt code;
435
- code.add (
436
- code_assignt{ length_expr, side_effect_expr_nondett{java_int_type (), loc}});
438
+ code.add (code_frontend_assignt{
439
+ length_expr, side_effect_expr_nondett{java_int_type (), loc}});
437
440
code.add (code_assumet{binary_predicate_exprt{
438
441
length_expr, ID_ge, from_integer (0 , java_int_type ())}});
439
442
return std::make_pair (length_expr, std::move (code));
@@ -506,16 +509,16 @@ static code_with_references_listt assign_nondet_length_array_from_json(
506
509
// / One of the cases in the recursive algorithm: the case where \p expr
507
510
// / represents a string.
508
511
// / See \ref assign_from_json_rec.
509
- static code_assignt assign_string_from_json (
512
+ static code_frontend_assignt assign_string_from_json (
510
513
const jsont &json,
511
514
const exprt &expr,
512
515
object_creation_infot &info)
513
516
{
514
517
const auto json_string = get_untyped_string (json);
515
518
PRECONDITION (json_string.is_string ());
516
- return code_assignt {expr,
517
- get_or_create_string_literal_symbol (
518
- json_string.value , info.symbol_table , true )};
519
+ return code_frontend_assignt {expr,
520
+ get_or_create_string_literal_symbol (
521
+ json_string.value , info.symbol_table , true )};
519
522
}
520
523
521
524
// / Helper function for \ref assign_struct_from_json which recursively assigns
@@ -586,7 +589,7 @@ static code_with_references_listt assign_struct_from_json(
586
589
to_struct_expr (*initial_object),
587
590
ns,
588
591
struct_tag_typet (" java::" + id2string (java_class_type.get_tag ())));
589
- result.add (code_assignt {expr, *initial_object});
592
+ result.add (code_frontend_assignt {expr, *initial_object});
590
593
result.append (assign_struct_components_from_json (expr, json, info));
591
594
}
592
595
return result;
@@ -646,7 +649,7 @@ static code_with_references_listt assign_enum_from_json(
646
649
const exprt ordinal_expr =
647
650
from_integer (std::stoi (json[" ordinal" ].value ), java_int_type ());
648
651
649
- result.add (code_assignt {
652
+ result.add (code_frontend_assignt {
650
653
expr,
651
654
typecast_exprt::conditional_cast (
652
655
array_element_from_pointer (values_data, ordinal_expr), expr.type ())});
@@ -696,7 +699,8 @@ static code_with_references_listt assign_pointer_with_given_type_from_json(
696
699
}
697
700
698
701
auto result = assign_pointer_from_json (new_symbol, json, info);
699
- result.add (code_assignt{expr, typecast_exprt{new_symbol, pointer_type}});
702
+ result.add (
703
+ code_frontend_assignt{expr, typecast_exprt{new_symbol, pointer_type}});
700
704
return result;
701
705
}
702
706
else
@@ -828,7 +832,7 @@ static code_with_references_listt assign_reference_from_json(
828
832
assign_struct_from_json (dereference_exprt (reference.expr ), json, info));
829
833
}
830
834
}
831
- result.add (code_assignt {
835
+ result.add (code_frontend_assignt {
832
836
expr, typecast_exprt::conditional_cast (reference.expr , expr.type ())});
833
837
return result;
834
838
}
0 commit comments