From 3c3aa3210e1e19ef4f064bf10179fdaa0eb7d1d8 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 17 Sep 2020 17:38:44 +0300 Subject: [PATCH] FIR: use FROM_EXPRESSION, not FOR_SUBTYPING capt. types in substitution --- .../src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt | 2 +- .../jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt | 2 +- .../kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt | 4 ++-- .../generics/projectionsScope/typeParameterBounds.fir.kt | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt index 42e42baaba9..4a86a448df6 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt @@ -67,7 +67,7 @@ fun createSubstitution( type: ConeClassLikeType, session: FirSession ): Map { - val capturedOrType = session.typeContext.captureFromArguments(type, CaptureStatus.FOR_SUBTYPING) ?: type + val capturedOrType = session.typeContext.captureFromArguments(type, CaptureStatus.FROM_EXPRESSION) ?: type val typeArguments = (capturedOrType as ConeClassLikeType).typeArguments return typeParameters.zip(typeArguments) { typeParameter, typeArgument -> val typeParameterSymbol = typeParameter.symbol diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt index c8e9ac4de75..9edad117219 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt @@ -151,7 +151,7 @@ data class ConeSubstitutorByMap(val substitution: Map, b: A) { a.foo1(Out()) a.foo1(Out()) - a.foo2(Inv()) + a.foo2(Inv()) a.foo2(Inv()) a.foo2>(Inv()) @@ -31,7 +31,7 @@ fun foo2(a: A, b: A) { b.foo1(Out()) b.foo1>(Out()) - b.foo2(Inv()) + b.foo2(Inv()) b.foo2(Inv()) b.foo2>(Inv())