KT-51243 Fix parameterized contextual lambda

^KT-51243 Fixed
This commit is contained in:
Anastasia.Shadrina
2022-03-15 15:15:51 +07:00
committed by teamcity
parent efd5beb49b
commit d857142514
10 changed files with 102 additions and 10 deletions
@@ -19,11 +19,11 @@ import org.jetbrains.kotlin.resolve.calls.model.LambdaWithTypeVariableAsExpected
import org.jetbrains.kotlin.resolve.calls.model.PostponedCallableReferenceMarker
import org.jetbrains.kotlin.resolve.calls.model.PostponedResolvedAtomMarker
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
import org.jetbrains.kotlin.utils.addIfNotNull
// --------------------------- Variables ---------------------------
// -------------------------- Atoms --------------------------
sealed class PostponedResolvedAtom : PostponedResolvedAtomMarker {
@@ -62,7 +62,16 @@ class ResolvedLambdaAtom(
lateinit var returnStatements: Collection<FirStatement>
override val inputTypes: Collection<ConeKotlinType> get() = receiver?.let { parameters + it } ?: parameters
override val inputTypes: Collection<ConeKotlinType>
get() {
if (receiver == null && contextReceivers.isEmpty()) return parameters
return ArrayList<ConeKotlinType>(parameters.size + contextReceivers.size + (if (receiver != null) 1 else 0)).apply {
addAll(parameters)
addIfNotNull(receiver)
addAll(contextReceivers)
}
}
override val outputType: ConeKotlinType get() = returnType
fun replaceExpectedType(expectedType: ConeKotlinType, newReturnType: ConeTypeVariableType) {