Raw FIR: provide receiver to ++, -- operators
This commit is contained in:
committed by
Mikhail Glukhikh
parent
dc4ccf8d23
commit
0ae2f992fa
@@ -360,7 +360,7 @@ internal fun generateIncrementOrDecrementBlock(
|
||||
val resultName = Name.special("<unary-result>")
|
||||
val resultInitializer = FirFunctionCallImpl(session, baseExpression).apply {
|
||||
this.calleeReference = FirSimpleNamedReference(session, baseExpression.operationReference, callName)
|
||||
this.arguments += generateAccessExpression(session, baseExpression, tempName)
|
||||
this.explicitReceiver = generateAccessExpression(session, baseExpression, tempName)
|
||||
}
|
||||
val resultVar = generateTemporaryVariable(session, baseExpression, resultName, resultInitializer)
|
||||
val assignment = argument.generateAssignment(
|
||||
|
||||
@@ -32,7 +32,7 @@ FILE: destructuring.kt
|
||||
lvar y: <implicit> = <destruct>#.component2()
|
||||
lvar z: String = <destruct>#.component3()
|
||||
lval <unary>: <implicit> = x#
|
||||
x# = inc#(<unary>#)
|
||||
x# = <unary>#.inc#()
|
||||
<unary>#
|
||||
y# *= Double(2.0)
|
||||
z# = String()
|
||||
|
||||
+10
-10
@@ -3,25 +3,25 @@ FILE: unary.kt
|
||||
lvar x: <implicit> = Int(0)
|
||||
lval x1: <implicit> = {
|
||||
lval <unary>: <implicit> = x#
|
||||
x# = inc#(<unary>#)
|
||||
x# = <unary>#.inc#()
|
||||
<unary>#
|
||||
}
|
||||
|
||||
lval x2: <implicit> = {
|
||||
lval <unary>: <implicit> = x#
|
||||
x# = inc#(<unary>#)
|
||||
x# = <unary>#.inc#()
|
||||
x#
|
||||
}
|
||||
|
||||
lval x3: <implicit> = {
|
||||
lval <unary>: <implicit> = x#
|
||||
x# = dec#(<unary>#)
|
||||
x# = <unary>#.dec#()
|
||||
x#
|
||||
}
|
||||
|
||||
lval x4: <implicit> = {
|
||||
lval <unary>: <implicit> = x#
|
||||
x# = dec#(<unary>#)
|
||||
x# = <unary>#.dec#()
|
||||
<unary>#
|
||||
}
|
||||
|
||||
@@ -46,13 +46,13 @@ FILE: unary.kt
|
||||
public? final? fun test2(x: X): kotlin/Unit {
|
||||
lval x1: <implicit> = {
|
||||
lval <unary>: <implicit> = x#.i#
|
||||
x#.i# = inc#(<unary>#)
|
||||
x#.i# = <unary>#.inc#()
|
||||
<unary>#
|
||||
}
|
||||
|
||||
lval x2: <implicit> = {
|
||||
lval <unary>: <implicit> = x#.i#
|
||||
lval <unary-result>: <implicit> = inc#(<unary>#)
|
||||
lval <unary-result>: <implicit> = <unary>#.inc#()
|
||||
x#.i# = <unary-result>#
|
||||
<unary-result>#
|
||||
}
|
||||
@@ -61,13 +61,13 @@ FILE: unary.kt
|
||||
public? final? fun test3(arr: Array<Int>): kotlin/Unit {
|
||||
lval x1: <implicit> = {
|
||||
lval <unary>: <implicit> = arr#.get#(Int(0))
|
||||
arr#.set#(Int(0), inc#(<unary>#))
|
||||
arr#.set#(Int(0), <unary>#.inc#())
|
||||
<unary>#
|
||||
}
|
||||
|
||||
lval x2: <implicit> = {
|
||||
lval <unary>: <implicit> = arr#.get#(Int(1))
|
||||
lval <unary-result>: <implicit> = inc#(<unary>#)
|
||||
lval <unary-result>: <implicit> = <unary>#.inc#()
|
||||
arr#.set#(Int(1), <unary-result>#)
|
||||
<unary-result>#
|
||||
}
|
||||
@@ -85,13 +85,13 @@ FILE: unary.kt
|
||||
public? final? fun test4(y: Y): kotlin/Unit {
|
||||
lval x1: <implicit> = {
|
||||
lval <unary>: <implicit> = y#.arr#.get#(Int(0))
|
||||
y#.arr#.set#(Int(0), inc#(<unary>#))
|
||||
y#.arr#.set#(Int(0), <unary>#.inc#())
|
||||
<unary>#
|
||||
}
|
||||
|
||||
lval x2: <implicit> = {
|
||||
lval <unary>: <implicit> = y#.arr#.get#(Int(1))
|
||||
lval <unary-result>: <implicit> = inc#(<unary>#)
|
||||
lval <unary-result>: <implicit> = <unary>#.inc#()
|
||||
y#.arr#.set#(Int(1), <unary-result>#)
|
||||
<unary-result>#
|
||||
}
|
||||
|
||||
@@ -3,12 +3,12 @@ FILE: while.kt
|
||||
lvar k: <implicit> = Int(0)
|
||||
some@while(<(k#, limit#)) {
|
||||
lval <unary>: <implicit> = k#
|
||||
k# = inc#(<unary>#)
|
||||
k# = <unary>#.inc#()
|
||||
<unary>#
|
||||
println#(k#)
|
||||
while(==(k#, Int(13))) {
|
||||
lval <unary>: <implicit> = k#
|
||||
k# = inc#(<unary>#)
|
||||
k# = <unary>#.inc#()
|
||||
<unary>#
|
||||
when () {
|
||||
<(k#, limit#) -> {
|
||||
@@ -35,7 +35,7 @@ FILE: while.kt
|
||||
lvar k: <implicit> = limit#
|
||||
do {
|
||||
lval <unary>: <implicit> = k#
|
||||
k# = dec#(<unary>#)
|
||||
k# = <unary>#.dec#()
|
||||
<unary>#
|
||||
println#(k#)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user