Skip to content

Commit 81b3148

Browse files
committed
Java frontend: get qualified generic types of static fields
Before it would unintentionally erase SomeClass.field from A<B> to just the unqualified A type.
1 parent 85a2a6a commit 81b3148

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

jbmc/src/java_bytecode/java_bytecode_convert_method.cpp

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,12 +1554,10 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
15541554
const bool is_assertions_disabled_field=
15551555
field_name.find("$assertionsDisabled")!=std::string::npos;
15561556

1557+
const irep_idt field_id(
1558+
get_static_field(arg0.get_string(ID_class), field_name));
15571559
const symbol_exprt symbol_expr(
1558-
get_static_field(arg0.get_string(ID_class), field_name), arg0.type());
1559-
1560-
INVARIANT(
1561-
symbol_table.has_symbol(symbol_expr.get_identifier()),
1562-
"getstatic symbol should have been created before method conversion");
1560+
symbol_table.lookup_ref(field_id).symbol_expr());
15631561

15641562
convert_getstatic(
15651563
arg0, symbol_expr, is_assertions_disabled_field, c, results);
@@ -1574,12 +1572,10 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
15741572
PRECONDITION(op.size() == 1 && results.empty());
15751573
const auto &field_name=arg0.get_string(ID_component_name);
15761574

1575+
const irep_idt field_id(
1576+
get_static_field(arg0.get_string(ID_class), field_name));
15771577
const symbol_exprt symbol_expr(
1578-
get_static_field(arg0.get_string(ID_class), field_name), arg0.type());
1579-
1580-
INVARIANT(
1581-
symbol_table.has_symbol(symbol_expr.get_identifier()),
1582-
"putstatic symbol should have been created before method conversion");
1578+
symbol_table.lookup_ref(field_id).symbol_expr());
15831579

15841580
c = convert_putstatic(i_it->source_location, arg0, op, symbol_expr);
15851581
}

0 commit comments

Comments
 (0)