[IR] Unify usages of isArrayOrPrimitiveArray() && isInlineArrayConstructor()

This commit is contained in:
Dmitriy Dolovov
2023-03-23 17:03:07 +01:00
parent 0f17191e0e
commit 6fe0849402
2 changed files with 2 additions and 8 deletions
@@ -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 && (
@@ -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