[PL] Fix: Respect inlined array constructor lambdas

This commit is contained in:
Dmitriy Dolovov
2023-03-23 17:11:34 +01:00
committed by Space Team
parent 5baeae3bfd
commit 66532d714e
4 changed files with 33 additions and 3 deletions
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.ir.*
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.symbols.impl.IrClassPublicSymbolImpl
@@ -23,6 +24,13 @@ import java.io.File
val IrConstructor.constructedClass get() = this.parent as IrClass
fun IrClassifierSymbol?.isArrayOrPrimitiveArray(builtins: IrBuiltIns): Boolean =
this == builtins.arrayClass || this in builtins.primitiveArraysToPrimitiveTypes
// Constructors can't be marked as inline in metadata, hence this check.
fun IrFunction.isInlineArrayConstructor(builtIns: IrBuiltIns): Boolean =
this is IrConstructor && valueParameters.size == 2 && constructedClass.symbol.isArrayOrPrimitiveArray(builtIns)
val IrDeclarationParent.fqNameForIrSerialization: FqName
get() = when (this) {
is IrPackageFragment -> this.fqName