Fix ResolvableType raw class isAssignable checks

Fix `isAssignable` for `ResolvableType.forRawClass` so that it can be
used with types backed by a `TypeVarible`. Prior to this commit the
rawClass value was used, which wouldn't always work.

Closes gh-23321
This commit is contained in:
Phillip Webb
2019-07-20 13:16:07 +01:00
parent f92b60c08f
commit e5bef10d85
2 changed files with 13 additions and 1 deletions

View File

@@ -135,6 +135,18 @@ public class ResolvableTypeTests {
assertTrue(type.isAssignableFrom(String.class));
}
@Test
public void forRawClassAssignableFromTypeVariable() { // gh-23321
ResolvableType typeVariable = ResolvableType.forClass(ExtendsList.class).as(List.class).getGeneric();
ResolvableType raw = ResolvableType.forRawClass(CharSequence.class);
assertThat(raw.resolve()).isEqualTo(CharSequence.class);
assertThat(typeVariable.resolve()).isEqualTo(CharSequence.class);
assertThat(raw.resolve().isAssignableFrom(typeVariable.resolve())).isTrue();
assertThat(typeVariable.resolve().isAssignableFrom(raw.resolve())).isTrue();
assertThat(raw.isAssignableFrom(typeVariable)).isTrue();
assertThat(typeVariable.isAssignableFrom(raw)).isTrue();
}
@Test
public void forInstanceMustNotBeNull() {
this.thrown.expect(IllegalArgumentException.class);