@@ -164,11 +164,12 @@ bool is_java_array_type(const typet &type)
164164{
165165 if (
166166 !can_cast_type<pointer_typet>(type) ||
167- !can_cast_type<struct_tag_typet>(type. subtype ()))
167+ !can_cast_type<struct_tag_typet>(to_pointer_type ( type). base_type ()))
168168 {
169169 return false ;
170170 }
171- const auto &subtype_struct_tag = to_struct_tag_type (type.subtype ());
171+ const auto &subtype_struct_tag =
172+ to_struct_tag_type (to_pointer_type (type).base_type ());
172173 return is_java_array_tag (subtype_struct_tag.get_identifier ());
173174}
174175
@@ -177,8 +178,9 @@ bool is_java_array_type(const typet &type)
177178// / an array type.
178179bool is_multidim_java_array_type (const typet &type)
179180{
180- return is_java_array_type (type) && is_java_array_type (java_array_element_type (
181- to_struct_tag_type (type.subtype ())));
181+ return is_java_array_type (type) &&
182+ is_java_array_type (java_array_element_type (
183+ to_struct_tag_type (to_pointer_type (type).base_type ())));
182184}
183185
184186// / Returns the underlying element type and array dimensionality of Java struct
@@ -190,8 +192,8 @@ java_array_dimension_and_element_type(const struct_tag_typet &type)
190192 typet underlying_type;
191193 for (underlying_type = java_reference_type (type);
192194 is_java_array_type (underlying_type);
193- underlying_type =
194- java_array_element_type ( to_struct_tag_type ( underlying_type. subtype ())))
195+ underlying_type = java_array_element_type ( to_struct_tag_type (
196+ to_java_reference_type ( underlying_type). base_type ())))
195197 {
196198 ++array_dimensions;
197199 }
@@ -539,7 +541,7 @@ size_t find_closing_semi_colon_for_reference_type(
539541java_reference_typet java_reference_array_type (const struct_tag_typet &subtype)
540542{
541543 java_reference_typet result = java_array_type (' a' );
542- result.subtype ().set (ID_element_type, java_reference_type (subtype));
544+ result.base_type ().set (ID_element_type, java_reference_type (subtype));
543545 return result;
544546}
545547
@@ -892,11 +894,13 @@ bool equal_java_types(const typet &type1, const typet &type2)
892894 bool arrays_with_same_element_type = true ;
893895 if (
894896 type1.id () == ID_pointer && type2.id () == ID_pointer &&
895- type1. subtype ().id () == ID_struct_tag &&
896- type2. subtype ().id () == ID_struct_tag)
897+ to_pointer_type ( type1). base_type ().id () == ID_struct_tag &&
898+ to_pointer_type ( type2). base_type ().id () == ID_struct_tag)
897899 {
898- const auto &subtype_symbol1 = to_struct_tag_type (type1.subtype ());
899- const auto &subtype_symbol2 = to_struct_tag_type (type2.subtype ());
900+ const auto &subtype_symbol1 =
901+ to_struct_tag_type (to_pointer_type (type1).base_type ());
902+ const auto &subtype_symbol2 =
903+ to_struct_tag_type (to_pointer_type (type2).base_type ());
900904 if (
901905 subtype_symbol1.get_identifier () == subtype_symbol2.get_identifier () &&
902906 is_java_array_tag (subtype_symbol1.get_identifier ()))
@@ -952,7 +956,8 @@ void get_dependencies_from_generic_parameters_rec(
952956 // Java reference type
953957 else if (t.id () == ID_pointer)
954958 {
955- get_dependencies_from_generic_parameters_rec (t.subtype (), refs);
959+ get_dependencies_from_generic_parameters_rec (
960+ to_pointer_type (t).base_type (), refs);
956961 }
957962
958963 // method type with parameters and return value
@@ -1102,9 +1107,10 @@ std::string pretty_java_type(const typet &type)
11021107 return " byte" ;
11031108 else if (is_reference (type))
11041109 {
1105- if (type. subtype ().id () == ID_struct_tag)
1110+ if (to_reference_type ( type). base_type ().id () == ID_struct_tag)
11061111 {
1107- const auto &struct_tag_type = to_struct_tag_type (type.subtype ());
1112+ const auto &struct_tag_type =
1113+ to_struct_tag_type (to_reference_type (type).base_type ());
11081114 const irep_idt &id = struct_tag_type.get_identifier ();
11091115 if (is_java_array_tag (id))
11101116 return pretty_java_type (java_array_element_type (struct_tag_type)) +
0 commit comments