Skip to content

Commit 60adf15

Browse files
author
Matthias Güdemann
committed
Simplify code for alternative parameter types
1 parent 1d54033 commit 60adf15

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

jbmc/src/java_bytecode/java_entry_point.cpp

+13-9
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)