From 16b4a2c46533e7044a68bee64b78666b2647080a Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 21 Aug 2019 17:17:41 +0300 Subject: [PATCH] Do not enhance type parameter bounds if they contain a raw type Otherwise enhancement algorithm starts forcing lazy mutually recursive computations that leads to RECURSION_IN_SUPERTYPES in complex cases --- .../kotlin/load/java/typeEnhancement/signatureEnhancement.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt index ffc41886cf4..d1de7596ebd 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.firstArgument import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.KotlinTypeChecker +import org.jetbrains.kotlin.types.typeUtil.contains import org.jetbrains.kotlin.types.typeUtil.isTypeParameter import org.jetbrains.kotlin.utils.JavaTypeEnhancementState import org.jetbrains.kotlin.utils.ReportLevel @@ -241,6 +242,8 @@ class SignatureEnhancement( context: LazyJavaResolverContext ): List { return bounds.map { bound -> + if (bound.contains { it is RawType }) return@map bound + SignatureParts( typeParameter, bound, emptyList(), false, context, AnnotationQualifierApplicabilityType.TYPE_PARAMETER_BOUNDS,