[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, 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,
val variableAsFunctionMode = selectorCalleeReference is FirResolvedNamedReference && is FirSmartCastExpression -> convertToIrExpression(receiver)
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
implicitCastInserter.implicitCastFromReceivers( is FirQualifiedAccessExpression -> when (receiver.explicitReceiver) {
this, receiver, selector, null -> {
conversionScope.defaultConversionTypeOrigin() 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?> { private fun List<FirStatement>.mapToIrStatements(recognizePostfixIncDec: Boolean = true): List<IrStatement?> {