Skip to content

Commit

Permalink
Consistently detect wildcard without bounds as unresolvable
Browse files Browse the repository at this point in the history
Closes gh-32327
See gh-20727
  • Loading branch information
jhoeller committed Feb 24, 2024
1 parent 567547b commit 260404b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ private boolean isAssignableFrom(ResolvableType other, boolean strict,
other.getComponentType(), true, matchedBefore, upUntilUnresolvable));
}

if (upUntilUnresolvable && other.isUnresolvableTypeVariable()) {
if (upUntilUnresolvable && (other.isUnresolvableTypeVariable() || other.isWildcardWithoutBounds())) {
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1367,6 +1367,18 @@ void spr16456() throws Exception {
assertThat(type.resolveGeneric()).isEqualTo(Integer.class);
}

@Test
void gh32327() throws Exception {
ResolvableType repository1 = ResolvableType.forField(Fields.class.getField("repository"));
ResolvableType repository2 = ResolvableType.forMethodReturnType(Methods.class.getMethod("repository"));
assertThat(repository1.hasUnresolvableGenerics());
assertThat(repository1.isAssignableFrom(repository2)).isFalse();
assertThat(repository1.isAssignableFromResolvedPart(repository2)).isTrue();
assertThat(repository2.hasUnresolvableGenerics());
assertThat(repository2.isAssignableFrom(repository1)).isTrue();
assertThat(repository2.isAssignableFromResolvedPart(repository1)).isTrue();
}


private ResolvableType testSerialization(ResolvableType type) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Expand Down Expand Up @@ -1407,7 +1419,7 @@ static class ExtendsMap extends HashMap<String, Integer> {
}


interface SomeRepository {
interface SomeRepository<S extends Serializable> {

<T> T someMethod(Class<T> arg0, Class<?> arg1, Class<Object> arg2);
}
Expand Down Expand Up @@ -1458,6 +1470,8 @@ static class Fields<T> {
public Integer[] integerArray;

public int[] intArray;

public SomeRepository<? extends Serializable> repository;
}


Expand Down Expand Up @@ -1486,6 +1500,8 @@ interface Methods<T> {
List<String> list1();

List<String> list2();

SomeRepository<?> repository();
}


Expand Down

0 comments on commit 260404b

Please sign in to comment.