[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,30 +937,35 @@ class Fir2IrVisitor(
selector: FirQualifiedAccessExpression,
): IrExpression? {
val selectorCalleeReference = selector.calleeReference
return when (receiver) {
val irReceiver = when (receiver) {
null -> return null
is FirResolvedQualifier -> callGenerator.convertToGetObject(receiver, selector as? FirCallableReferenceAccess)
is FirFunctionCall, is FirThisReceiverExpression, is FirCallableReferenceAccess, is FirSmartCastExpression ->
convertToIrExpression(receiver)
else -> if (receiver is FirQualifiedAccessExpression && receiver.explicitReceiver == null) {
val variableAsFunctionMode = selectorCalleeReference is FirResolvedNamedReference &&
selectorCalleeReference.name != OperatorNameConventions.INVOKE &&
(selectorCalleeReference.resolvedSymbol as? FirCallableSymbol)?.callableId?.callableName == OperatorNameConventions.INVOKE
callGenerator.convertToIrCall(
receiver, receiver.resolvedType, explicitReceiverExpression = null,
variableAsFunctionMode = variableAsFunctionMode
)
} else {
convertToIrExpression(receiver)
}
}?.run {
if (receiver is FirQualifiedAccessExpression && receiver.calleeReference is FirSuperReference) return@run this
is FirFunctionCall,
is FirThisReceiverExpression,
is FirCallableReferenceAccess,
is FirSmartCastExpression -> convertToIrExpression(receiver)
implicitCastInserter.implicitCastFromReceivers(
this, receiver, selector,
conversionScope.defaultConversionTypeOrigin()
)
}
is FirQualifiedAccessExpression -> when (receiver.explicitReceiver) {
null -> {
val variableAsFunctionMode = selectorCalleeReference is FirResolvedNamedReference &&
selectorCalleeReference.name != OperatorNameConventions.INVOKE &&
(selectorCalleeReference.resolvedSymbol as? FirCallableSymbol)?.callableId?.callableName == OperatorNameConventions.INVOKE
callGenerator.convertToIrCall(
receiver, receiver.resolvedType, explicitReceiverExpression = null,
variableAsFunctionMode = variableAsFunctionMode
)
}
else -> convertToIrExpression(receiver)
}
else -> convertToIrExpression(receiver)
} ?: return null
if (receiver is FirQualifiedAccessExpression && receiver.calleeReference is FirSuperReference) return irReceiver
return implicitCastInserter.implicitCastFromReceivers(
irReceiver, receiver, selector,
conversionScope.defaultConversionTypeOrigin()
)
}
private fun List<FirStatement>.mapToIrStatements(recognizePostfixIncDec: Boolean = true): List<IrStatement?> {