@@ -364,34 +364,40 @@ 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),
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),
369371 function.location ,
370372 ID_java,
371373 symbol_table);
372374 main_arguments[param_number] = result_symbol.symbol_expr ();
373375
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) {
378378 code_blockt init_code_for_type;
379379 exprt init_expr_for_parameter = object_factory (
380380 java_reference_type (type),
381- id2string (base_name) + " _alt_" + std::to_string (alternative),
381+ id2string (base_name) + " _alternative_" +
382+ id2string (type.get_identifier ()),
382383 init_code_for_type,
383384 symbol_table,
384385 parameters,
385386 allocation_typet::DYNAMIC,
386387 function.location ,
387388 pointer_type_selector);
388- alternative++;
389389 init_code_for_type.add (
390390 code_assignt (
391391 result_symbol.symbol_expr (),
392392 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);
395401
396402 init_code.add (
397403 generate_nondet_switch (
0 commit comments