Detect wildcard without bounds returned from VariableResolver as well
See gh-32327 See gh-20727
This commit is contained in:
parent
430824038e
commit
9198774f13
|
@ -655,7 +655,7 @@ public class ResolvableType implements Serializable {
|
|||
return true;
|
||||
}
|
||||
ResolvableType resolved = this.variableResolver.resolveVariable(variable);
|
||||
if (resolved == null || resolved.isUnresolvableTypeVariable()) {
|
||||
if (resolved == null || resolved.isUnresolvableTypeVariable() || resolved.isWildcardWithoutBounds()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1370,13 +1370,19 @@ class ResolvableTypeTests {
|
|||
@Test
|
||||
void gh32327() throws Exception {
|
||||
ResolvableType repository1 = ResolvableType.forField(Fields.class.getField("repository"));
|
||||
ResolvableType repository2 = ResolvableType.forMethodReturnType(Methods.class.getMethod("repository"));
|
||||
assertThat(repository1.hasUnresolvableGenerics());
|
||||
ResolvableType repository2 = ResolvableType.forMethodReturnType(Methods.class.getMethod("someRepository"));
|
||||
ResolvableType repository3 = ResolvableType.forMethodReturnType(Methods.class.getMethod("subRepository"));
|
||||
assertThat(repository1.hasUnresolvableGenerics()).isFalse();
|
||||
assertThat(repository1.isAssignableFrom(repository2)).isFalse();
|
||||
assertThat(repository1.isAssignableFromResolvedPart(repository2)).isTrue();
|
||||
assertThat(repository2.hasUnresolvableGenerics());
|
||||
assertThat(repository1.isAssignableFrom(repository3)).isFalse();
|
||||
assertThat(repository1.isAssignableFromResolvedPart(repository3)).isTrue();
|
||||
assertThat(repository2.hasUnresolvableGenerics()).isTrue();
|
||||
assertThat(repository2.isAssignableFrom(repository1)).isTrue();
|
||||
assertThat(repository2.isAssignableFromResolvedPart(repository1)).isTrue();
|
||||
assertThat(repository3.hasUnresolvableGenerics()).isTrue();
|
||||
assertThat(repository3.isAssignableFrom(repository1)).isFalse();
|
||||
assertThat(repository3.isAssignableFromResolvedPart(repository1)).isFalse();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1424,6 +1430,9 @@ class ResolvableTypeTests {
|
|||
<T> T someMethod(Class<T> arg0, Class<?> arg1, Class<Object> arg2);
|
||||
}
|
||||
|
||||
interface SubRepository<S extends Serializable> extends SomeRepository {
|
||||
}
|
||||
|
||||
|
||||
static class Fields<T> {
|
||||
|
||||
|
@ -1501,7 +1510,9 @@ class ResolvableTypeTests {
|
|||
|
||||
List<String> list2();
|
||||
|
||||
SomeRepository<?> repository();
|
||||
SomeRepository<?> someRepository();
|
||||
|
||||
SubRepository<?> subRepository();
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue