File tree 5 files changed +18
-0
lines changed
5 files changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -279,6 +279,7 @@ void java_bytecode_convert_classt::convert(
279
279
class_type.set_is_inner_class (c.is_inner_class );
280
280
class_type.set_is_static_class (c.is_static_class );
281
281
class_type.set_is_anonymous_class (c.is_anonymous_class );
282
+ class_type.set_outer_class (c.outer_class );
282
283
if (c.is_enum )
283
284
{
284
285
if (max_array_length != 0 && c.enum_elements > max_array_length)
Original file line number Diff line number Diff line change @@ -221,6 +221,7 @@ class java_bytecode_parse_treet
221
221
bool is_static_class = false ;
222
222
bool is_anonymous_class = false ;
223
223
bool attribute_bootstrapmethods_read = false ;
224
+ irep_idt outer_class;
224
225
size_t enum_elements=0 ;
225
226
226
227
enum class method_handle_typet
Original file line number Diff line number Diff line change @@ -1643,6 +1643,11 @@ void java_bytecode_parsert::rinner_classes_attribute(
1643
1643
}
1644
1644
else
1645
1645
{
1646
+ std::string outer_class_info_name =
1647
+ class_infot (pool_entry (outer_class_info_index))
1648
+ .get_name (pool_entry_lambda);
1649
+ parsed_class.outer_class =
1650
+ constant (outer_class_info_index).type ().get (ID_C_base_name);
1646
1651
parsed_class.is_private = is_private;
1647
1652
parsed_class.is_protected = is_protected;
1648
1653
parsed_class.is_public = is_public;
Original file line number Diff line number Diff line change @@ -121,6 +121,16 @@ class java_class_typet:public class_typet
121
121
return set (ID_is_inner_class, is_inner_class);
122
122
}
123
123
124
+ const irep_idt get_outer_class () const
125
+ {
126
+ return get (ID_outer_class);
127
+ }
128
+
129
+ void set_outer_class (irep_idt outer_class)
130
+ {
131
+ return set (ID_outer_class, outer_class);
132
+ }
133
+
124
134
const bool get_is_static_class () const
125
135
{
126
136
return get_bool (ID_is_static);
Original file line number Diff line number Diff line change @@ -675,6 +675,7 @@ IREP_ID_ONE(interface)
675
675
IREP_ID_TWO(C_must_not_throw, #must_not_throw)
676
676
IREP_ID_ONE(is_inner_class)
677
677
IREP_ID_ONE(is_anonymous)
678
+ IREP_ID_ONE(outer_class)
678
679
679
680
// Projects depending on this code base that wish to extend the list of
680
681
// available ids should provide a file local_irep_ids.h in their source tree and
You can’t perform that action at this time.
0 commit comments