Improve resolution of generic type variables
See gh-23418
This commit is contained in:
committed by
Stephane Nicoll
parent
267908a118
commit
124a76b1ad
@@ -199,8 +199,13 @@ public final class GenericTypeResolver {
|
||||
private static ResolvableType resolveVariable(TypeVariable<?> typeVariable, ResolvableType contextType) {
|
||||
ResolvableType resolvedType;
|
||||
if (contextType.hasGenerics()) {
|
||||
resolvedType = ResolvableType.forType(typeVariable, contextType);
|
||||
if (resolvedType.resolve() != null) {
|
||||
ResolvableType.VariableResolver variableResolver = contextType.asVariableResolver();
|
||||
if (variableResolver == null) {
|
||||
return ResolvableType.NONE;
|
||||
}
|
||||
|
||||
resolvedType = variableResolver.resolveVariable(typeVariable);
|
||||
if (resolvedType != null) {
|
||||
return resolvedType;
|
||||
}
|
||||
}
|
||||
@@ -208,16 +213,17 @@ public final class GenericTypeResolver {
|
||||
ResolvableType superType = contextType.getSuperType();
|
||||
if (superType != ResolvableType.NONE) {
|
||||
resolvedType = resolveVariable(typeVariable, superType);
|
||||
if (resolvedType.resolve() != null) {
|
||||
if (resolvedType != ResolvableType.NONE) {
|
||||
return resolvedType;
|
||||
}
|
||||
}
|
||||
for (ResolvableType ifc : contextType.getInterfaces()) {
|
||||
resolvedType = resolveVariable(typeVariable, ifc);
|
||||
if (resolvedType.resolve() != null) {
|
||||
if (resolvedType != ResolvableType.NONE) {
|
||||
return resolvedType;
|
||||
}
|
||||
}
|
||||
|
||||
return ResolvableType.NONE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user