[FIR2IR] Fix generating of IINC instruction with FIR for inc/dec operations

This commit is contained in:
Ivan Kochurkin
2021-10-11 20:06:30 +03:00
committed by TeamCityServer
parent 3148913e60
commit 98596eaa08
2 changed files with 8 additions and 2 deletions
@@ -316,7 +316,14 @@ class CallAndReferenceGenerator(
val calleeReference = variableAssignment.calleeReference
val symbol =
calleeReference.toSymbolForCall(session, classifierStorage, declarationStorage, conversionScope, preferGetter = false)
val origin = IrStatementOrigin.EQ
val origin = if (variableAssignment.source?.kind is FirFakeSourceElementKind.DesugaredIncrementOrDecrement) {
if ((variableAssignment.rValue as? FirFunctionCall)?.calleeReference?.name?.asString() == "inc")
IrStatementOrigin.PREFIX_INCR
else
IrStatementOrigin.PREFIX_DECR
} else {
IrStatementOrigin.EQ
}
return variableAssignment.convertWithOffsets { startOffset, endOffset ->
val assignedValue = visitor.convertToIrExpression(variableAssignment.rValue)
when (symbol) {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
fun main(args: Array<String>) {
var i = 10
++i