[FIR2IR] Minor. Cleanup Fir2IrVisitor.convertToIrReceiverExpression

This commit is contained in:
Dmitriy Novozhilov
2024-02-27 09:49:30 +02:00
committed by Space Team
parent 5b01396a11
commit 62e9c944fe
@@ -937,12 +937,16 @@ class Fir2IrVisitor(
selector: FirQualifiedAccessExpression, selector: FirQualifiedAccessExpression,
): IrExpression? { ): IrExpression? {
val selectorCalleeReference = selector.calleeReference val selectorCalleeReference = selector.calleeReference
return when (receiver) { val irReceiver = when (receiver) {
null -> return null null -> return null
is FirResolvedQualifier -> callGenerator.convertToGetObject(receiver, selector as? FirCallableReferenceAccess) is FirResolvedQualifier -> callGenerator.convertToGetObject(receiver, selector as? FirCallableReferenceAccess)
is FirFunctionCall, is FirThisReceiverExpression, is FirCallableReferenceAccess, is FirSmartCastExpression -> is FirFunctionCall,
convertToIrExpression(receiver) is FirThisReceiverExpression,
else -> if (receiver is FirQualifiedAccessExpression && receiver.explicitReceiver == null) { is FirCallableReferenceAccess,
is FirSmartCastExpression -> convertToIrExpression(receiver)
is FirQualifiedAccessExpression -> when (receiver.explicitReceiver) {
null -> {
val variableAsFunctionMode = selectorCalleeReference is FirResolvedNamedReference && val variableAsFunctionMode = selectorCalleeReference is FirResolvedNamedReference &&
selectorCalleeReference.name != OperatorNameConventions.INVOKE && selectorCalleeReference.name != OperatorNameConventions.INVOKE &&
(selectorCalleeReference.resolvedSymbol as? FirCallableSymbol)?.callableId?.callableName == OperatorNameConventions.INVOKE (selectorCalleeReference.resolvedSymbol as? FirCallableSymbol)?.callableId?.callableName == OperatorNameConventions.INVOKE
@@ -950,18 +954,19 @@ class Fir2IrVisitor(
receiver, receiver.resolvedType, explicitReceiverExpression = null, receiver, receiver.resolvedType, explicitReceiverExpression = null,
variableAsFunctionMode = variableAsFunctionMode variableAsFunctionMode = variableAsFunctionMode
) )
} else {
convertToIrExpression(receiver)
} }
}?.run { else -> convertToIrExpression(receiver)
if (receiver is FirQualifiedAccessExpression && receiver.calleeReference is FirSuperReference) return@run this }
else -> convertToIrExpression(receiver)
} ?: return null
implicitCastInserter.implicitCastFromReceivers( if (receiver is FirQualifiedAccessExpression && receiver.calleeReference is FirSuperReference) return irReceiver
this, receiver, selector,
return implicitCastInserter.implicitCastFromReceivers(
irReceiver, receiver, selector,
conversionScope.defaultConversionTypeOrigin() conversionScope.defaultConversionTypeOrigin()
) )
} }
}
private fun List<FirStatement>.mapToIrStatements(recognizePostfixIncDec: Boolean = true): List<IrStatement?> { private fun List<FirStatement>.mapToIrStatements(recognizePostfixIncDec: Boolean = true): List<IrStatement?> {
var index = 0 var index = 0