JVM_IR indy-lambdas: minor updates and fixes
KT-44278 KT-26060 KT-42621
This commit is contained in:
committed by
TeamCityServer
parent
088448043a
commit
ab20a8ffff
+3
-2
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.*
|
||||
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.InlineClassAbi
|
||||
import org.jetbrains.kotlin.builtins.functions.BuiltInFunctionArity
|
||||
import org.jetbrains.kotlin.config.JvmClosureGenerationScheme
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
@@ -101,7 +102,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext)
|
||||
private fun wrapLambdaReferenceWithIndySamConversion(expression: IrBlock, reference: IrFunctionReference): IrBlock {
|
||||
expression.statements[expression.statements.size - 1] = wrapWithIndySamConversion(reference.type, reference)
|
||||
val irLambda = reference.symbol.owner
|
||||
// JDK LambdaMetafactory can't adapt '(...)V' tp '(...)Lkotlin/Unit;'.
|
||||
// JDK LambdaMetafactory can't adapt '(...)V' to '(...)Lkotlin/Unit;'.
|
||||
if (irLambda.returnType.isUnit()) {
|
||||
irLambda.returnType = irLambda.returnType.makeNullable()
|
||||
}
|
||||
@@ -171,7 +172,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext)
|
||||
if (plainLambda) {
|
||||
var parametersCount = target.valueParameters.size
|
||||
if (target.extensionReceiverParameter != null) ++parametersCount
|
||||
if (parametersCount > 22)
|
||||
if (parametersCount >= BuiltInFunctionArity.BIG_ARITY)
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user