Skip to content

Commit 88a8e8b

Browse files
Code cleanup
1 parent c579bfe commit 88a8e8b

File tree

4 files changed

+48
-43
lines changed

4 files changed

+48
-43
lines changed

jbmc/src/java_bytecode/generic_parameter_specialization_map_keys.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,10 @@ class generic_parameter_specialization_map_keyst
2323
public:
2424
/// Initialize a generic-parameter-specialization-map entry owner operating
2525
/// on a given map. Initially it does not own any map entry.
26-
/// \param _generic_parameter_specialization_map: map to operate on.
26+
/// \param generic_parameter_specialization_map: map to operate on.
2727
explicit generic_parameter_specialization_map_keyst(
28-
generic_parameter_specialization_mapt
29-
&_generic_parameter_specialization_map)
30-
: generic_parameter_specialization_map(
31-
_generic_parameter_specialization_map)
28+
generic_parameter_specialization_mapt &generic_parameter_specialization_map)
29+
: generic_parameter_specialization_map(generic_parameter_specialization_map)
3230
{
3331
}
3432

jbmc/src/java_bytecode/java_bytecode_convert_class.cpp

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,16 @@ bool java_bytecode_convert_class(
989989
return true;
990990
}
991991

992+
static std::string get_final_name_component(const std::string &name)
993+
{
994+
return name.substr(name.rfind("::") + 2);
995+
}
996+
997+
static std::string get_without_final_name_component(const std::string &name)
998+
{
999+
return name.substr(0, name.rfind("::"));
1000+
}
1001+
9921002
/// For a given generic type parameter, check if there is a parameter in the
9931003
/// given vector of replacement parameters with a matching name. If yes,
9941004
/// replace the identifier of the parameter at hand by the identifier of
@@ -1008,39 +1018,34 @@ static void find_and_replace_parameter(
10081018
// get the name of the parameter, e.g., `T` from `java::Class::T`
10091019
const std::string &parameter_full_name =
10101020
id2string(parameter.type_variable_ref().get_identifier());
1011-
const std::string &parameter_name =
1012-
parameter_full_name.substr(parameter_full_name.rfind("::") + 2);
1021+
const std::string parameter_name =
1022+
get_final_name_component(parameter_full_name);
10131023

10141024
// check if there is a replacement parameter with the same name
1015-
const auto replacement_parameter_p = std::find_if(
1025+
const auto replacement_parameter_it = std::find_if(
10161026
replacement_parameters.begin(),
10171027
replacement_parameters.end(),
10181028
[&parameter_name](const java_generic_parametert &replacement_param)
10191029
{
1020-
const std::string &replacement_parameter_full_name =
1021-
id2string(replacement_param.type_variable().get_identifier());
1022-
return parameter_name.compare(
1023-
replacement_parameter_full_name.substr(
1024-
replacement_parameter_full_name.rfind("::") + 2)) == 0;
1030+
return parameter_name ==
1031+
get_final_name_component(
1032+
id2string(replacement_param.type_variable().get_identifier()));
10251033
});
1034+
if(replacement_parameter_it == replacement_parameters.end())
1035+
return;
10261036

1027-
// if a replacement parameter was found, update the identifier
1028-
if(replacement_parameter_p != replacement_parameters.end())
1029-
{
1030-
const std::string &replacement_parameter_full_name =
1031-
id2string(replacement_parameter_p->type_variable().get_identifier());
1032-
1033-
// the replacement parameter is a viable one, i.e., it comes from an outer
1034-
// class
1035-
PRECONDITION(
1036-
parameter_full_name.substr(0, parameter_full_name.rfind("::"))
1037-
.compare(
1038-
replacement_parameter_full_name.substr(
1039-
0, replacement_parameter_full_name.rfind("::"))) > 0);
1040-
1041-
parameter.type_variable_ref().set_identifier(
1042-
replacement_parameter_full_name);
1043-
}
1037+
// A replacement parameter was found, update the identifier
1038+
const std::string &replacement_parameter_full_name =
1039+
id2string(replacement_parameter_it->type_variable().get_identifier());
1040+
1041+
// the replacement parameter is a viable one, i.e., it comes from an outer
1042+
// class
1043+
PRECONDITION(
1044+
get_without_final_name_component(parameter_full_name)
1045+
.compare(
1046+
get_without_final_name_component(replacement_parameter_full_name)) > 0);
1047+
1048+
parameter.type_variable_ref().set_identifier(replacement_parameter_full_name);
10441049
}
10451050

10461051
/// Recursively find all generic type parameters of a given type and replace
@@ -1136,12 +1141,13 @@ void mark_java_implicitly_generic_class_type(
11361141
{
11371142
const std::string qualified_class_name = "java::" + id2string(class_name);
11381143
PRECONDITION(symbol_table.has_symbol(qualified_class_name));
1144+
// This will have its type changed
11391145
symbolt &class_symbol = symbol_table.get_writeable_ref(qualified_class_name);
1140-
java_class_typet &class_type = to_java_class_type(class_symbol.type);
1146+
const java_class_typet &class_type = to_java_class_type(class_symbol.type);
11411147

11421148
// the class must be an inner non-static class, i.e., have a field this$*
11431149
// TODO this should be simplified once static inner classes are marked
1144-
// during parsing
1150+
// during parsing
11451151
bool no_this_field = std::none_of(
11461152
class_type.components().begin(),
11471153
class_type.components().end(),
@@ -1158,7 +1164,7 @@ void mark_java_implicitly_generic_class_type(
11581164
// the order from the outer-most inwards
11591165
std::vector<java_generic_parametert> implicit_generic_type_parameters;
11601166
std::string::size_type outer_class_delimiter =
1161-
qualified_class_name.rfind("$");
1167+
qualified_class_name.rfind('$');
11621168
while(outer_class_delimiter != std::string::npos)
11631169
{
11641170
std::string outer_class_name =
@@ -1178,7 +1184,7 @@ void mark_java_implicitly_generic_class_type(
11781184
outer_generic_type_parameters.begin(),
11791185
outer_generic_type_parameters.end());
11801186
}
1181-
outer_class_delimiter = outer_class_name.rfind("$");
1187+
outer_class_delimiter = outer_class_name.rfind('$');
11821188
}
11831189
else
11841190
{
@@ -1191,19 +1197,21 @@ void mark_java_implicitly_generic_class_type(
11911197
// implicitly generic and update identifiers of type parameters used in fields
11921198
if(!implicit_generic_type_parameters.empty())
11931199
{
1194-
class_symbol.type = java_implicitly_generic_class_typet(
1200+
java_implicitly_generic_class_typet new_class_type(
11951201
class_type, implicit_generic_type_parameters);
11961202

1197-
for(auto &field : class_type.components())
1203+
for(auto &field : new_class_type.components())
11981204
{
11991205
find_and_replace_parameters(
12001206
field.type(), implicit_generic_type_parameters);
12011207
}
12021208

1203-
for(auto &base : class_type.bases())
1209+
for(auto &base : new_class_type.bases())
12041210
{
12051211
find_and_replace_parameters(
12061212
base.type(), implicit_generic_type_parameters);
12071213
}
1214+
1215+
class_symbol.type = new_class_type;
12081216
}
12091217
}

jbmc/unit/java_bytecode/goto_program_generics/mutually_recursive_generics.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ SCENARIO(
9191
const std::vector<codet> &entry_point_code =
9292
require_goto_statements::require_entry_point_statements(symbol_table);
9393

94-
const auto has_key_and_value_field = [&](
95-
const irep_idt &field,
96-
const irep_idt &key_type,
97-
const irep_idt &val_type) {
94+
const auto has_key_and_value_field = [&entry_point_code, &symbol_table](
95+
const irep_idt &field,
96+
const irep_idt &key_type,
97+
const irep_idt &val_type) {
9898
require_goto_statements::require_struct_component_assignment(
9999
field, {}, "key", key_type, {}, entry_point_code, symbol_table);
100100
require_goto_statements::require_struct_component_assignment(

src/util/simplify_expr_int.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,7 @@ simplify_exprt::resultt<> simplify_exprt::simplify_plus(const plus_exprt &expr)
415415
// we only merge neighboring constants!
416416
Forall_expr(it, new_operands)
417417
{
418-
exprt::operandst::iterator next=it;
419-
next++;
418+
const exprt::operandst::iterator next = std::next(it);
420419

421420
if(next != new_operands.end())
422421
{

0 commit comments

Comments
 (0)