[IR] Unify usages of isArrayOrPrimitiveArray() && isInlineArrayConstructor()
This commit is contained in:
@@ -67,13 +67,7 @@ fun IrStatement.unwrapInlineLambda(): IrFunctionReference? = when (this) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun IrFunction.isInlineFunctionCall(context: JvmBackendContext): Boolean =
|
fun IrFunction.isInlineFunctionCall(context: JvmBackendContext): Boolean =
|
||||||
(!context.state.isInlineDisabled || typeParameters.any { it.isReified }) && (isInline || isInlineArrayConstructor(context))
|
(!context.state.isInlineDisabled || typeParameters.any { it.isReified }) && (isInline || isInlineArrayConstructor(context.irBuiltIns))
|
||||||
|
|
||||||
// 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
|
|
||||||
}
|
|
||||||
|
|
||||||
fun IrDeclaration.isInlineOnly(): Boolean =
|
fun IrDeclaration.isInlineOnly(): Boolean =
|
||||||
this is IrFunction && (
|
this is IrFunction && (
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ abstract class DataClassMembersGenerator(
|
|||||||
?: throw AssertionError("Class: ${irClass.descriptor}: unexpected property descriptor: $property")
|
?: throw AssertionError("Class: ${irClass.descriptor}: unexpected property descriptor: $property")
|
||||||
|
|
||||||
val IrClassifierSymbol?.isArrayOrPrimitiveArray: Boolean
|
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
|
abstract fun declareSimpleFunction(startOffset: Int, endOffset: Int, functionDescriptor: FunctionDescriptor): IrFunction
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user