Move FunctionInvokeDescriptor.BIG_ARITY to :core:compiler.common

This commit is contained in:
Dmitriy Novozhilov
2020-08-31 15:23:34 +03:00
parent bf4bf30b4a
commit 4d5f28d5c0
8 changed files with 26 additions and 18 deletions
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.backend.jvm.codegen
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor
import org.jetbrains.kotlin.builtins.functions.BuiltInFunctionArity
import org.jetbrains.kotlin.codegen.AsmUtil
import org.jetbrains.kotlin.codegen.JvmCodegenUtil
import org.jetbrains.kotlin.codegen.signature.AsmTypeFactory
@@ -240,7 +240,7 @@ class IrTypeMapper(private val context: JvmBackendContext) : KotlinTypeMapperBas
val parameters = classifier.typeParameters.map(IrTypeParameter::symbol)
val arguments = type.arguments
if ((classifier.symbol.isFunction() && arguments.size > FunctionInvokeDescriptor.BIG_ARITY)
if ((classifier.symbol.isFunction() && arguments.size > BuiltInFunctionArity.BIG_ARITY)
|| classifier.symbol.isKFunction() || classifier.symbol.isKSuspendFunction()
) {
writeGenericArguments(sw, listOf(arguments.last()), listOf(parameters.last()), mode)
@@ -263,4 +263,4 @@ class IrTypeMapper(private val context: JvmBackendContext) : KotlinTypeMapperBas
private fun boxTypeIfNeeded(possiblyPrimitiveType: Type, needBoxedType: Boolean): Type =
if (needBoxedType) AsmUtil.boxType(possiblyPrimitiveType) else possiblyPrimitiveType
}
}
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.ir.createJvmIrBuilder
import org.jetbrains.kotlin.backend.jvm.ir.irArray
import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor
import org.jetbrains.kotlin.builtins.functions.BuiltInFunctionArity
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.ir.IrStatement
@@ -47,7 +47,7 @@ private class FunctionNVarargBridgeLowering(val context: JvmBackendContext) :
// Change calls to big arity invoke functions to vararg calls.
override fun visitFunctionAccess(expression: IrFunctionAccessExpression): IrExpression {
if (expression.valueArgumentsCount < FunctionInvokeDescriptor.BIG_ARITY ||
if (expression.valueArgumentsCount < BuiltInFunctionArity.BIG_ARITY ||
!(expression.symbol.owner.parentAsClass.defaultType.isFunctionOrKFunction() ||
expression.symbol.owner.parentAsClass.defaultType.isSuspendFunctionOrKFunction()) ||
expression.symbol.owner.name.asString() != "invoke"
@@ -69,7 +69,7 @@ private class FunctionNVarargBridgeLowering(val context: JvmBackendContext) :
override fun visitClassNew(declaration: IrClass): IrStatement {
val bigArityFunctionSuperTypes = declaration.superTypes.filterIsInstance<IrSimpleType>().filter {
it.isFunctionType && it.arguments.size > FunctionInvokeDescriptor.BIG_ARITY
it.isFunctionType && it.arguments.size > BuiltInFunctionArity.BIG_ARITY
}
if (bigArityFunctionSuperTypes.isEmpty())