[FIR2IR] Minor: extract variable

This commit is contained in:
Mikhail Glukhikh
2020-03-16 16:28:50 +03:00
parent 51c83e5f62
commit 049bc6a431
@@ -93,11 +93,10 @@ internal class CallGenerator(
val origin = IrStatementOrigin.EQ val origin = IrStatementOrigin.EQ
return variableAssignment.convertWithOffsets { startOffset, endOffset -> return variableAssignment.convertWithOffsets { startOffset, endOffset ->
if (symbol != null && symbol.isBound) { if (symbol != null && symbol.isBound) {
val assignedValue = visitor.convertToIrExpression(variableAssignment.rValue)
when (symbol) { when (symbol) {
is IrFieldSymbol -> IrSetFieldImpl( is IrFieldSymbol -> IrSetFieldImpl(startOffset, endOffset, symbol, type, origin).apply {
startOffset, endOffset, symbol, type, origin value = assignedValue
).apply {
value = visitor.convertToIrExpression(variableAssignment.rValue)
} }
is IrPropertySymbol -> { is IrPropertySymbol -> {
val irProperty = symbol.owner val irProperty = symbol.owner
@@ -105,21 +104,16 @@ internal class CallGenerator(
val backingField = irProperty.backingField val backingField = irProperty.backingField
when { when {
setter != null -> IrCallImpl(startOffset, endOffset, type, setter.symbol, origin).apply { setter != null -> IrCallImpl(startOffset, endOffset, type, setter.symbol, origin).apply {
putValueArgument(0, visitor.convertToIrExpression(variableAssignment.rValue)) putValueArgument(0, assignedValue)
} }
backingField != null -> IrSetFieldImpl(startOffset, endOffset, backingField.symbol, type).apply { backingField != null -> IrSetFieldImpl(startOffset, endOffset, backingField.symbol, type).apply {
// NB: to be consistent with FIR2IR, origin should be null here // NB: to be consistent with FIR2IR, origin should be null here
value = visitor.convertToIrExpression(variableAssignment.rValue) value = assignedValue
} }
else -> generateErrorCallExpression(startOffset, endOffset, calleeReference) else -> generateErrorCallExpression(startOffset, endOffset, calleeReference)
} }
} }
is IrVariableSymbol -> { is IrVariableSymbol -> IrSetVariableImpl(startOffset, endOffset, type, symbol, assignedValue, origin)
IrSetVariableImpl(
startOffset, endOffset, type, symbol,
visitor.convertToIrExpression(variableAssignment.rValue), origin
)
}
else -> generateErrorCallExpression(startOffset, endOffset, calleeReference) else -> generateErrorCallExpression(startOffset, endOffset, calleeReference)
} }
} else { } else {