Merge branch '6.2.x'

This commit is contained in:
Stéphane Nicoll 2025-01-15 17:08:09 +01:00
commit 2c749ebdb7
2 changed files with 19 additions and 3 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2024 the original author or authors. * Copyright 2002-2025 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -177,7 +177,7 @@ public final class GenericTypeResolver {
generics[i] = resolvedTypeArgument; generics[i] = resolvedTypeArgument;
} }
else { else {
generics[i] = ResolvableType.forType(typeArgument); generics[i] = ResolvableType.forType(typeArgument).resolveType();
} }
} }
else if (typeArgument instanceof ParameterizedType) { else if (typeArgument instanceof ParameterizedType) {

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2024 the original author or authors. * Copyright 2002-2025 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -211,6 +211,14 @@ class GenericTypeResolverTests {
assertThat(ResolvableType.forType(resolved).getGeneric(0).getGeneric(0).resolve()).isEqualTo(String.class); assertThat(ResolvableType.forType(resolved).getGeneric(0).getGeneric(0).resolve()).isEqualTo(String.class);
} }
@Test
void resolvedTypeWithBase() {
Type type = method(WithBaseTypes.class, "get").getGenericReturnType();
Type resolvedType = resolveType(type, WithBaseTypes.class);
ParameterizedTypeReference<List<A>> reference = new ParameterizedTypeReference<>() {};
assertThat(resolvedType).isEqualTo(reference.getType());
}
private static Method method(Class<?> target, String methodName, Class<?>... parameterTypes) { private static Method method(Class<?> target, String methodName, Class<?>... parameterTypes) {
Method method = findMethod(target, methodName, parameterTypes); Method method = findMethod(target, methodName, parameterTypes);
assertThat(method).describedAs(target.getName() + "#" + methodName).isNotNull(); assertThat(method).describedAs(target.getName() + "#" + methodName).isNotNull();
@ -398,4 +406,12 @@ class GenericTypeResolverTests {
public interface StringListOfListSupplier extends ListOfListSupplier<String> { public interface StringListOfListSupplier extends ListOfListSupplier<String> {
} }
static class WithBaseTypes {
<T extends A> List<T> get() {
return List.of();
}
}
} }