diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt index 93fe0239d38..4112413164d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.providers.dependenciesSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider -import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.scopes.impl.FirPackageMemberScope import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.* @@ -19,7 +18,6 @@ import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.mpp.CallableSymbolMarker import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualCompatibilityChecker import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility -import org.jetbrains.kotlin.utils.zipIfSizesAreEqual object FirExpectActualResolver { fun findExpectForActual( @@ -33,7 +31,6 @@ object FirExpectActualResolver { is FirCallableSymbol<*> -> { val callableId = actualSymbol.callableId val classId = callableId.classId - var parentSubstitutor: ConeSubstitutor? = null var expectContainingClass: FirRegularClassSymbol? = null var actualContainingClass: FirRegularClassSymbol? = null val candidates = when { @@ -44,12 +41,6 @@ object FirExpectActualResolver { actualContainingClass = useSiteSession.symbolProvider.getClassLikeSymbolByClassId(classId) ?.fullyExpandedClass(useSiteSession) - val expectTypeParameters = expectContainingClass?.typeParameterSymbols.orEmpty() - val actualTypeParameters = actualContainingClass?.typeParameterSymbols.orEmpty() - - parentSubstitutor = (expectTypeParameters zipIfSizesAreEqual actualTypeParameters) - ?.let { createExpectActualTypeParameterSubstitutor(it, useSiteSession) } - when (actualSymbol) { is FirConstructorSymbol -> expectContainingClass?.getConstructors(scopeSession) else -> expectContainingClass?.getMembersForExpectClass(actualSymbol.name) @@ -70,7 +61,6 @@ object FirExpectActualResolver { AbstractExpectActualCompatibilityChecker.getCallablesCompatibility( expectDeclaration, actualSymbol as CallableSymbolMarker, - parentSubstitutor, expectContainingClass, actualContainingClass, context diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt index d5b2d2d4911..d48ecbefd5e 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt @@ -46,16 +46,23 @@ object AbstractExpectActualCompatibilityChecker { fun getCallablesCompatibility( expectDeclaration: CallableSymbolMarker, actualDeclaration: CallableSymbolMarker, - parentSubstitutor: TypeSubstitutorMarker?, expectContainingClass: RegularClassSymbolMarker?, actualContainingClass: RegularClassSymbolMarker?, context: ExpectActualMatchingContext, - ): ExpectActualCompatibility { - val result = with(context) { - getCallablesCompatibility(expectDeclaration, actualDeclaration, parentSubstitutor, expectContainingClass, actualContainingClass) - } + ): ExpectActualCompatibility = with (context) { + val expectTypeParameters = expectContainingClass?.typeParameters.orEmpty() + val actualTypeParameters = actualContainingClass?.typeParameters.orEmpty() + val parentSubstitutor = (expectTypeParameters zipIfSizesAreEqual actualTypeParameters) + ?.let { createExpectActualTypeParameterSubstitutor(it, parentSubstitutor = null) } + val result = getCallablesCompatibility( + expectDeclaration, + actualDeclaration, + parentSubstitutor, + expectContainingClass, + actualContainingClass + ) @Suppress("UNCHECKED_CAST") - return result as ExpectActualCompatibility + result as ExpectActualCompatibility } fun matchSingleExpectTopLevelDeclarationAgainstPotentialActuals(