@@ -364,34 +364,38 @@ exprt::operandst java_build_arguments(
364
364
365
365
const symbolt result_symbol = get_fresh_aux_symbol (
366
366
p.type (),
367
- " nondet_parameter_ " + std::to_string (param_number ),
367
+ id2string (function. name ),
368
368
" nondet_parameter_" + std::to_string (param_number),
369
369
function.location ,
370
370
ID_java,
371
371
symbol_table);
372
372
main_arguments[param_number] = result_symbol.symbol_expr ();
373
373
374
- std::vector<codet> cases;
375
- size_t alternative = 0 ;
376
- for (const auto &type : alternatives)
377
- {
374
+ std::vector<codet> cases (alternatives.size ());
375
+ const auto initialize_parameter = [&](const symbol_typet &type) {
378
376
code_blockt init_code_for_type;
379
377
exprt init_expr_for_parameter = object_factory (
380
378
java_reference_type (type),
381
- id2string (base_name) + " _alt_" + std::to_string (alternative),
379
+ id2string (base_name) + " _alternative_" +
380
+ id2string (type.get_identifier ()),
382
381
init_code_for_type,
383
382
symbol_table,
384
383
parameters,
385
384
allocation_typet::DYNAMIC,
386
385
function.location ,
387
386
pointer_type_selector);
388
- alternative++;
389
387
init_code_for_type.add (
390
388
code_assignt (
391
389
result_symbol.symbol_expr (),
392
390
typecast_exprt (init_expr_for_parameter, p.type ())));
393
- cases.push_back (init_code_for_type);
394
- }
391
+ return init_code_for_type;
392
+ };
393
+
394
+ std::transform (
395
+ alternatives.begin (),
396
+ alternatives.end (),
397
+ cases.begin (),
398
+ initialize_parameter);
395
399
396
400
init_code.add (
397
401
generate_nondet_switch (
0 commit comments