Skip to content

Commit 9ba55e2

Browse files
Marks anonymous classes as inner classes
1 parent 6ce7b13 commit 9ba55e2

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

jbmc/src/java_bytecode/java_bytecode_parser.cpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -1628,18 +1628,17 @@ void java_bytecode_parsert::rinner_classes_attribute(
16281628

16291629
// If the original parsed class name matches the inner class name,
16301630
// the parsed class is an inner class, so overwrite the parsed class'
1631-
// access information and mark it as an inner class
1632-
parsed_class.is_inner_class =
1633-
remove_separator_char(id2string(parsed_class.name), '.') ==
1631+
// access information and mark it as an inner class.
1632+
bool is_inner_class = remove_separator_char(id2string(parsed_class.name), '.') ==
16341633
remove_separator_char(inner_class_info_name, '/');
1635-
if(!parsed_class.is_inner_class)
1634+
if(is_inner_class)
1635+
parsed_class.is_inner_class = is_inner_class;
1636+
if(!is_inner_class)
16361637
continue;
16371638
// Note that if outer_class_info_index == 0, the inner class is an anonymous
16381639
// or local class, and is treated as private.
16391640
if(outer_class_info_index == 0)
16401641
{
1641-
// This is a marker for an anonymous or local class
1642-
// which are treated as private
16431642
parsed_class.is_private = true;
16441643
parsed_class.is_protected = false;
16451644
parsed_class.is_public = false;

jbmc/unit/java_bytecode/java_bytecode_parser/parse_java_attributes.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ SCENARIO(
204204
new_symbol_table.lookup_ref("java::ContainsAnonymousClass$1");
205205
const java_class_typet java_class =
206206
to_java_class_type(class_symbol.type);
207-
REQUIRE_FALSE(java_class.get_is_inner_class());
207+
REQUIRE(java_class.get_is_inner_class());
208208
REQUIRE(java_class.get_access() == ID_private);
209209
}
210210
}
@@ -218,7 +218,7 @@ SCENARIO(
218218
new_symbol_table.lookup_ref("java::ContainsAnonymousClass$2");
219219
const java_class_typet java_class =
220220
to_java_class_type(class_symbol.type);
221-
REQUIRE_FALSE(java_class.get_is_inner_class());
221+
REQUIRE(java_class.get_is_inner_class());
222222
REQUIRE(java_class.get_access() == ID_private);
223223
}
224224
}
@@ -230,7 +230,7 @@ SCENARIO(
230230
new_symbol_table.lookup_ref("java::ContainsAnonymousClass$3");
231231
const java_class_typet java_class =
232232
to_java_class_type(class_symbol.type);
233-
REQUIRE_FALSE(java_class.get_is_inner_class());
233+
REQUIRE(java_class.get_is_inner_class());
234234
REQUIRE(java_class.get_access() == ID_private);
235235
}
236236
}
@@ -242,7 +242,7 @@ SCENARIO(
242242
new_symbol_table.lookup_ref("java::ContainsAnonymousClass$4");
243243
const java_class_typet java_class =
244244
to_java_class_type(class_symbol.type);
245-
REQUIRE_FALSE(java_class.get_is_inner_class());
245+
REQUIRE(java_class.get_is_inner_class());
246246
REQUIRE(java_class.get_access() == ID_private);
247247
}
248248
}

0 commit comments

Comments
 (0)