There is an infinite loop occurring in {{TypeHelper.normalize()}}. The issue seems to occur any time a parameterized supertype is passed into {{TypeHelper.isAssignable}}.
I was able to see that in my test cases, {{ParameterizedType.getActualTypeArguments()}} is returning the same exact object as {{Class.getTypeParameters()}}... which causes {{TypeHelper}} to create a map with an entry where Key = Value. Given the logic in {{TypeHelper.normalize()}}, this in turn causes an infinite loop.
{code} private static <K, V> Map<K, V> normalize(Map<K, V> map) { // TODO: will this cause an infinite loop with recursive bounds?
for ( Entry<K, V> entry : map.entrySet() ) { K key = entry.getKey(); V value = entry.getValue();
while ( map.containsKey( value ) ) { value = map.get( value ); }
map.put( key, value ); }
return map; } {code}
I've attached a couple of test cases which illustrate the issue , copied below .
{code}{code}
|