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