From 6fe0849402ccedb2e14556fa3bdf846d0eb67a70 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 23 Mar 2023 17:03:07 +0100 Subject: [PATCH] [IR] Unify usages of isArrayOrPrimitiveArray() && isInlineArrayConstructor() --- .../jetbrains/kotlin/backend/jvm/ir/JvmIrInlineUtils.kt | 8 +------- .../jetbrains/kotlin/ir/util/DataClassMembersGenerator.kt | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrInlineUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrInlineUtils.kt index 0613d978e9a..f75f340a731 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrInlineUtils.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrInlineUtils.kt @@ -67,13 +67,7 @@ fun IrStatement.unwrapInlineLambda(): IrFunctionReference? = when (this) { } fun IrFunction.isInlineFunctionCall(context: JvmBackendContext): Boolean = - (!context.state.isInlineDisabled || typeParameters.any { it.isReified }) && (isInline || isInlineArrayConstructor(context)) - -// Constructors can't be marked as inline in metadata, hence this hack. -private fun IrFunction.isInlineArrayConstructor(context: JvmBackendContext): Boolean = - this is IrConstructor && valueParameters.size == 2 && constructedClass.symbol.let { - it == context.irBuiltIns.arrayClass || it in context.irBuiltIns.primitiveArraysToPrimitiveTypes - } + (!context.state.isInlineDisabled || typeParameters.any { it.isReified }) && (isInline || isInlineArrayConstructor(context.irBuiltIns)) fun IrDeclaration.isInlineOnly(): Boolean = this is IrFunction && ( diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DataClassMembersGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DataClassMembersGenerator.kt index 4e4afbe660f..73bd871edbd 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DataClassMembersGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DataClassMembersGenerator.kt @@ -267,7 +267,7 @@ abstract class DataClassMembersGenerator( ?: throw AssertionError("Class: ${irClass.descriptor}: unexpected property descriptor: $property") val IrClassifierSymbol?.isArrayOrPrimitiveArray: Boolean - get() = this == context.irBuiltIns.arrayClass || this in context.irBuiltIns.primitiveArraysToPrimitiveTypes + get() = isArrayOrPrimitiveArray(context.irBuiltIns) abstract fun declareSimpleFunction(startOffset: Int, endOffset: Int, functionDescriptor: FunctionDescriptor): IrFunction