diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index 509c9c0e1c8..974b660960f 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -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 + ) +} diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt index 875eb8bd0c3..51984b6fe95 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt @@ -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 { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt index 7fbe28fc42a..c2eaf960c7f 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt @@ -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 ) } }