fixup! [IR] Reorder parameters created in `LocalDeclarationsLowering`
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
index d1e728b..a41b2d7 100644
--- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
+++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
@@ -792,7 +792,6 @@
newDeclaration,
type = localFunctionContext.remapType(param.type),
varargElementType = param.varargElementType?.let { localFunctionContext.remapType(it) },
- kind = if (param.kind == IrParameterKind.ExtensionReceiver) param.kind else IrParameterKind.Regular,
).also {
newParameterToOld.putAbsentOrSame(it, param)
}
@@ -824,8 +823,12 @@
}
// For now, we must preserve the parameter kind order since the old API is still in use, and the bridge expects the canonical order.
- val (extensionReceiver, nonExtensionParameters) = transformedParameters.partition { it.kind == IrParameterKind.ExtensionReceiver }
- return extensionReceiver + parametersForCapturedValues + nonExtensionParameters
+ val capturedValuesStartIndex = transformedParameters.indexOfFirst { it.kind == IrParameterKind.Regular }
+ .takeIf { it != -1 } ?: transformedParameters.size
+ return buildList {
+ addAll(transformedParameters)
+ addAll(capturedValuesStartIndex, parametersForCapturedValues)
+ }
}
private fun IrFunction.recordTransformedValueParameters(localContext: LocalContextWithClosureAsParameters) {