FIR2IR: extract implicitCast function

This commit is contained in:
Mikhail Glukhikh
2023-10-27 16:56:38 +02:00
committed by Space Team
parent 1ef0f9e944
commit ba06af9d7f
3 changed files with 15 additions and 14 deletions
@@ -840,3 +840,14 @@ context(Fir2IrComponents)
internal fun FirClass.declaredScope(): FirContainingNamesAwareScope {
return symbol.declaredScope()
}
internal fun implicitCast(original: IrExpression, castType: IrType, typeOperator: IrTypeOperator): IrTypeOperatorCall {
return IrTypeOperatorCallImpl(
original.startOffset,
original.endOffset,
castType,
typeOperator,
castType,
original
)
}
@@ -329,14 +329,7 @@ class Fir2IrImplicitCastInserter(
IrTypeOperator.IMPLICIT_CAST
}
return IrTypeOperatorCallImpl(
original.startOffset,
original.endOffset,
castType,
typeOperator,
castType,
original
)
return implicitCast(original, castType, typeOperator)
}
internal fun coerceToUnitIfNeeded(original: IrExpression, irBuiltIns: IrBuiltIns): IrExpression {
@@ -1276,13 +1276,10 @@ class CallAndReferenceGenerator(
// NB: for FE 1.0, this type cast is added by InterfaceObjectCallsLowering
// However, it doesn't work for FIR due to different f/o structure
// (FIR calls Any method directly, but FE 1.0 calls its interface f/o instead)
IrTypeOperatorCallImpl(
baseDispatchReceiver.startOffset,
baseDispatchReceiver.endOffset,
implicitCast(
baseDispatchReceiver,
irBuiltIns.anyType,
IrTypeOperator.IMPLICIT_CAST,
irBuiltIns.anyType,
baseDispatchReceiver
IrTypeOperator.IMPLICIT_CAST
)
}
}