@@ -364,34 +364,38 @@ exprt::operandst java_build_arguments(
364364
365365 const symbolt result_symbol = get_fresh_aux_symbol (
366366 p.type (),
367- " nondet_parameter_ " + std::to_string (param_number ),
367+ id2string (function. name ),
368368 " nondet_parameter_" + std::to_string (param_number),
369369 function.location ,
370370 ID_java,
371371 symbol_table);
372372 main_arguments[param_number] = result_symbol.symbol_expr ();
373373
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) {
378376 code_blockt init_code_for_type;
379377 exprt init_expr_for_parameter = object_factory (
380378 java_reference_type (type),
381- id2string (base_name) + " _alt_" + std::to_string (alternative),
379+ id2string (base_name) + " _alternative_" +
380+ id2string (type.get_identifier ()),
382381 init_code_for_type,
383382 symbol_table,
384383 parameters,
385384 allocation_typet::DYNAMIC,
386385 function.location ,
387386 pointer_type_selector);
388- alternative++;
389387 init_code_for_type.add (
390388 code_assignt (
391389 result_symbol.symbol_expr (),
392390 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);
395399
396400 init_code.add (
397401 generate_nondet_switch (
0 commit comments