KT-53957 Fix indy lambdas with extension and context receivers (#5021)

This commit is contained in:
mcpiroman
2022-12-16 17:47:58 +01:00
committed by GitHub
parent b6682d1789
commit a244aaf162
4 changed files with 43 additions and 1 deletions
@@ -446,13 +446,19 @@ internal class LambdaMetafactoryArgumentsBuilder(
val oldToNew = HashMap<IrValueParameter, IrValueParameter>()
var newParameterIndex = 0
lambda.valueParameters.take(lambda.contextReceiverParametersCount).mapTo(newValueParameters) { oldParameter ->
oldParameter.copy(lambda, newParameterIndex++).also {
oldToNew[oldParameter] = it
}
}
newValueParameters.add(
oldExtensionReceiver.copy(lambda, newParameterIndex++, oldExtensionReceiver.name).also {
oldToNew[oldExtensionReceiver] = it
}
)
lambda.valueParameters.mapTo(newValueParameters) { oldParameter ->
lambda.valueParameters.drop(lambda.contextReceiverParametersCount).mapTo(newValueParameters) { oldParameter ->
oldParameter.copy(lambda, newParameterIndex++).also {
oldToNew[oldParameter] = it
}