From 8446ea8a6b04460fe4fd5e163d4a16dde1374a1d Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Mon, 6 May 2019 11:44:17 +0300 Subject: [PATCH] [NI] Avoid substituting type variables inside captured types This fixes exception in CreateAnnotation#testAnnotationType test --- .../jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt index 1a0ccacdf9a..eb59a56cbc3 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.UnwrappedType import org.jetbrains.kotlin.types.model.KotlinTypeMarker +import org.jetbrains.kotlin.types.typeUtil.unCapture import org.jetbrains.kotlin.utils.addToStdlib.safeAs /** @@ -190,7 +191,7 @@ sealed class CallResolutionResult( return diagnostics.map { if (it !is NewConstraintError) return@map it val lowerType = it.lowerType.safeAs()?.unwrap() ?: return@map it - val newLowerType = substitutor.safeSubstitute(lowerType) + val newLowerType = substitutor.safeSubstitute(lowerType.unCapture()) NewConstraintError(newLowerType, it.upperType, it.position) } }