Skip to content

Commit c141611

Browse files
Fix generic_type_index
This function needs to look at the type_variables comment to known which argument correspondsd to the given type.
1 parent 8127d4d commit c141611

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/java_bytecode/java_types.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -609,12 +609,18 @@ class java_generic_symbol_typet : public symbol_typet
609609
/// in the vector of generic types.
610610
/// \param type The type we are looking for.
611611
/// \return The index of the type in the vector of generic types.
612-
optionalt<size_t> generic_type_index(const reference_typet &type) const
612+
optionalt<size_t>
613+
generic_type_index(const java_generic_parametert &type) const
613614
{
614-
const auto &type_pointer =
615-
std::find(generic_types().begin(), generic_types().end(), type);
616-
if(type_pointer != generic_types().end())
617-
return type_pointer - generic_types().begin();
615+
const auto &type_variable = type.type_variable();
616+
const auto &generics = generic_types();
617+
for(std::size_t i = 0; i < generics.size(); ++i)
618+
{
619+
if(
620+
is_java_generic_parameter(generics[i]) &&
621+
to_java_generic_parameter(generics[i]).type_variable() == type_variable)
622+
return i;
623+
}
618624
return {};
619625
}
620626
};

0 commit comments

Comments
 (0)