[Native] Drop defaultOrNullableType from IrUtils2

We can simplify most usages of `defaultOrNullableType`
This commit is contained in:
Ivan Kylchik
2023-08-16 10:50:29 +02:00
committed by Space Team
parent 583a5496d5
commit 20165dd699
3 changed files with 8 additions and 10 deletions
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstKind
import org.jetbrains.kotlin.ir.expressions.IrConstantPrimitive import org.jetbrains.kotlin.ir.expressions.IrConstantPrimitive
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.defaultOrNullableType import org.jetbrains.kotlin.ir.types.makeNullable
import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.util.defaultType
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.KonanTarget
@@ -47,6 +47,9 @@ private fun Context.getTypeConversionImpl(
internal object DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION : IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION") internal object DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION : IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION")
private fun IrClass.defaultOrNullableType(hasQuestionMark: Boolean) =
if (hasQuestionMark) this.defaultType.makeNullable() else this.defaultType
internal fun Context.getBoxFunction(inlinedClass: IrClass): IrSimpleFunction = mapping.boxFunctions.getOrPut(inlinedClass) { internal fun Context.getBoxFunction(inlinedClass: IrClass): IrSimpleFunction = mapping.boxFunctions.getOrPut(inlinedClass) {
require(inlinedClass.isUsedAsBoxClass()) require(inlinedClass.isUsedAsBoxClass())
val classes = mutableListOf(inlinedClass) val classes = mutableListOf(inlinedClass)
@@ -59,7 +62,7 @@ internal fun Context.getBoxFunction(inlinedClass: IrClass): IrSimpleFunction = m
val isNullable = inlinedClass.inlinedClassIsNullable() val isNullable = inlinedClass.inlinedClassIsNullable()
val unboxedType = inlinedClass.defaultOrNullableType(isNullable) val unboxedType = inlinedClass.defaultOrNullableType(isNullable)
val boxedType = ir.symbols.any.owner.defaultOrNullableType(isNullable) val boxedType = if (isNullable) ir.symbols.irBuiltIns.anyNType else ir.symbols.irBuiltIns.anyType
irFactory.buildFun { irFactory.buildFun {
startOffset = inlinedClass.startOffset startOffset = inlinedClass.startOffset
@@ -90,11 +93,9 @@ internal fun Context.getUnboxFunction(inlinedClass: IrClass): IrSimpleFunction =
} }
require(parent is IrFile || parent is IrExternalPackageFragment) { "Local inline classes are not supported" } require(parent is IrFile || parent is IrExternalPackageFragment) { "Local inline classes are not supported" }
val symbols = ir.symbols
val isNullable = inlinedClass.inlinedClassIsNullable() val isNullable = inlinedClass.inlinedClassIsNullable()
val unboxedType = inlinedClass.defaultOrNullableType(isNullable) val unboxedType = inlinedClass.defaultOrNullableType(isNullable)
val boxedType = symbols.any.owner.defaultOrNullableType(isNullable) val boxedType = if (isNullable) ir.symbols.irBuiltIns.anyNType else ir.symbols.irBuiltIns.anyType
irFactory.buildFun { irFactory.buildFun {
startOffset = inlinedClass.startOffset startOffset = inlinedClass.startOffset
@@ -152,9 +152,9 @@ internal class BuiltinOperatorLowering(val context: Context) : FileLoweringPass,
is BinaryType.Reference -> { is BinaryType.Reference -> {
// TODO: don't use binaryType.nullable. // TODO: don't use binaryType.nullable.
val lhsRawType = irBuiltins.anyClass.owner.defaultOrNullableType(lhsBinaryType.nullable) val lhsRawType = if (lhsBinaryType.nullable) irBuiltins.anyNType else irBuiltins.anyType
val rhsBinaryType = rhs.type.computeBinaryType() as BinaryType.Reference<*> val rhsBinaryType = rhs.type.computeBinaryType() as BinaryType.Reference<*>
val rhsRawType = irBuiltins.anyClass.owner.defaultOrNullableType(rhsBinaryType.nullable) val rhsRawType = if (rhsBinaryType.nullable) irBuiltins.anyNType else irBuiltins.anyType
genFloatingOrReferenceEquals( genFloatingOrReferenceEquals(
symbol, symbol,
@@ -110,9 +110,6 @@ fun IrBuilderWithScope.irCatch() =
) )
) )
fun IrClass.defaultOrNullableType(hasQuestionMark: Boolean) =
if (hasQuestionMark) this.defaultType.makeNullable() else this.defaultType
@OptIn(ObsoleteDescriptorBasedAPI::class) @OptIn(ObsoleteDescriptorBasedAPI::class)
fun IrFunction.isRestrictedSuspendFunction(): Boolean = fun IrFunction.isRestrictedSuspendFunction(): Boolean =
this.descriptor.extensionReceiverParameter?.type?.isRestrictsSuspensionReceiver() == true this.descriptor.extensionReceiverParameter?.type?.isRestrictsSuspensionReceiver() == true