diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt index 64208068198..609a8e60c08 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt @@ -320,6 +320,21 @@ class FirBuilderInferenceSession( ) } + /** + * This function substitutes stub types in constraint with the corresponding type variable + * Please make sure to pass correct {Stub(Tv) => Tv} substitutor + * + * E.g.: + * ``` + * nonFixedToVariablesSubstitutor = {Stub(Tv) => Tv, Stub(Ov) => Ov} + * constraint: A <: B -> A <: B + * ``` + * + * The main reason for this function's existence is the custom handling of captured types. + * See KT-64027 + * + * @return Constraint, substituted according to the [nonFixedToVariablesSubstitutor] + */ private fun InitialConstraint.substituteNonFixedToVariables( nonFixedToVariablesSubstitutor: ConeSubstitutor, fixedTypeVariables: Map