Details
Description
The following two Java classes C1 and C2 cause Groovy to enter infinite recursion in genericTypeAsString when a method that takes a C1 is declared:
C1.java:
public class C1 <T2 extends C2<T2,T1>,T1 extends C1<T2,T1>> { } class C2<T2 extends C2<T2, T1>, T1 extends C1<T2, T1>> { }
repro.groovy
def f(C1 c1) { }
This is reduced from actual code in Jenkins, where Run and Job have type parameters like this.