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