Prevent recursion on captured recursive type parameters of inner classes during computing bound for them

^KT-47459 Fixed
This commit is contained in:
Victor Petukhov
2021-06-28 16:15:02 +03:00
committed by TeamCityServer
parent e071281b20
commit ad89d43186
8 changed files with 90 additions and 2 deletions
@@ -206,7 +206,7 @@ private fun KotlinType.extractTypeParametersFromUpperBounds(
} else {
val typeParameters = (constructor.declarationDescriptor as? ClassifierDescriptorWithTypeParameters)?.declaredTypeParameters
for ((i, argument) in arguments.withIndex()) {
val typeParameter = typeParameters?.get(i)
val typeParameter = typeParameters?.getOrNull(i) // TODO: support inner classes' type parameters
val isTypeParameterVisited = typeParameter != null && visitedTypeParameters != null && typeParameter in visitedTypeParameters
if (isTypeParameterVisited || argument.isStarProjection) continue
if (argument.type.constructor.declarationDescriptor in to || argument.type.constructor == baseType.constructor) continue