Avoid infinite recursion for self-referencing generic type

Closes gh-32282
See gh-30079
This commit is contained in:
Juergen Hoeller
2024-02-16 11:15:02 +01:00
parent bcf235cc66
commit ea3573176a
2 changed files with 48 additions and 6 deletions

View File

@@ -1321,6 +1321,18 @@ class ResolvableTypeTests {
assertThat(type.hasUnresolvableGenerics()).isTrue();
}
@Test
void hasUnresolvableGenericsWhenSelfReferring() {
ResolvableType type = ResolvableType.forInstance(new Bar());
assertThat(type.hasUnresolvableGenerics()).isFalse();
}
@Test
void hasUnresolvableGenericsWithEnum() {
ResolvableType type = ResolvableType.forType(SimpleEnum.class.getGenericSuperclass());
assertThat(type.hasUnresolvableGenerics()).isFalse();
}
@Test
void spr11219() throws Exception {
ResolvableType type = ResolvableType.forField(BaseProvider.class.getField("stuff"), BaseProvider.class);
@@ -1624,12 +1636,22 @@ class ResolvableTypeTests {
}
public interface ListOfListSupplier<T> {
interface ListOfListSupplier<T> {
List<List<T>> get();
}
class Foo<T extends Foo<T>> {
}
class Bar extends Foo<Bar> {
}
enum SimpleEnum { VALUE }
static class EnclosedInParameterizedType<T> {
static class InnerRaw {