From 71596a08b3ab311759d34bd13c2f5b30d4de1b54 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Wed, 27 Jan 2021 16:25:07 +0300 Subject: [PATCH] FIR2IR: Simplify Fir2IrImplicitCastInserter --- .../fir/backend/Fir2IrImplicitCastInserter.kt | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) 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 5fc4615bae1..5db2dbb6fa6 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 @@ -22,7 +22,9 @@ import org.jetbrains.kotlin.fir.resolve.scope import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol -import org.jetbrains.kotlin.fir.symbols.impl.* +import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor import org.jetbrains.kotlin.ir.IrElement @@ -299,8 +301,7 @@ class Fir2IrImplicitCastInserter( return implicitCastOrExpression(value, castTypeRef) } - val originalTypeRef = expressionWithSmartcast.originalType - if (castTypeRef is FirResolvedTypeRef && originalTypeRef is FirResolvedTypeRef) { + if (castTypeRef is FirResolvedTypeRef) { val castType = castTypeRef.type if (castType is ConeIntersectionType) { val unwrappedSymbol = (referencedSymbol as? FirCallableSymbol)?.baseForIntersectionOverride ?: referencedSymbol @@ -311,15 +312,7 @@ class Fir2IrImplicitCastInserter( } } } - return if (originalExpression is FirThisReceiverExpression && - originalExpression.calleeReference.boundSymbol is FirAnonymousFunctionSymbol - ) { - // If the original is a "this" in a local function and original.type is the same as castType, - // we still want to keep the cast. See kt-42517 - implicitCast(value, castTypeRef.toIrType()) - } else { - implicitCastOrExpression(value, castTypeRef.toIrType()) - } + return implicitCastOrExpression(value, castTypeRef.toIrType()) } private fun ConeKotlinType.doesContainReferencedSymbolInScope(