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 resultName = Name.special("<unary-result>")
|
||||||
val resultInitializer = FirFunctionCallImpl(session, baseExpression).apply {
|
val resultInitializer = FirFunctionCallImpl(session, baseExpression).apply {
|
||||||
this.calleeReference = FirSimpleNamedReference(session, baseExpression.operationReference, callName)
|
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 resultVar = generateTemporaryVariable(session, baseExpression, resultName, resultInitializer)
|
||||||
val assignment = argument.generateAssignment(
|
val assignment = argument.generateAssignment(
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ FILE: destructuring.kt
|
|||||||
lvar y: <implicit> = <destruct>#.component2()
|
lvar y: <implicit> = <destruct>#.component2()
|
||||||
lvar z: String = <destruct>#.component3()
|
lvar z: String = <destruct>#.component3()
|
||||||
lval <unary>: <implicit> = x#
|
lval <unary>: <implicit> = x#
|
||||||
x# = inc#(<unary>#)
|
x# = <unary>#.inc#()
|
||||||
<unary>#
|
<unary>#
|
||||||
y# *= Double(2.0)
|
y# *= Double(2.0)
|
||||||
z# = String()
|
z# = String()
|
||||||
|
|||||||
+10
-10
@@ -3,25 +3,25 @@ FILE: unary.kt
|
|||||||
lvar x: <implicit> = Int(0)
|
lvar x: <implicit> = Int(0)
|
||||||
lval x1: <implicit> = {
|
lval x1: <implicit> = {
|
||||||
lval <unary>: <implicit> = x#
|
lval <unary>: <implicit> = x#
|
||||||
x# = inc#(<unary>#)
|
x# = <unary>#.inc#()
|
||||||
<unary>#
|
<unary>#
|
||||||
}
|
}
|
||||||
|
|
||||||
lval x2: <implicit> = {
|
lval x2: <implicit> = {
|
||||||
lval <unary>: <implicit> = x#
|
lval <unary>: <implicit> = x#
|
||||||
x# = inc#(<unary>#)
|
x# = <unary>#.inc#()
|
||||||
x#
|
x#
|
||||||
}
|
}
|
||||||
|
|
||||||
lval x3: <implicit> = {
|
lval x3: <implicit> = {
|
||||||
lval <unary>: <implicit> = x#
|
lval <unary>: <implicit> = x#
|
||||||
x# = dec#(<unary>#)
|
x# = <unary>#.dec#()
|
||||||
x#
|
x#
|
||||||
}
|
}
|
||||||
|
|
||||||
lval x4: <implicit> = {
|
lval x4: <implicit> = {
|
||||||
lval <unary>: <implicit> = x#
|
lval <unary>: <implicit> = x#
|
||||||
x# = dec#(<unary>#)
|
x# = <unary>#.dec#()
|
||||||
<unary>#
|
<unary>#
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,13 +46,13 @@ FILE: unary.kt
|
|||||||
public? final? fun test2(x: X): kotlin/Unit {
|
public? final? fun test2(x: X): kotlin/Unit {
|
||||||
lval x1: <implicit> = {
|
lval x1: <implicit> = {
|
||||||
lval <unary>: <implicit> = x#.i#
|
lval <unary>: <implicit> = x#.i#
|
||||||
x#.i# = inc#(<unary>#)
|
x#.i# = <unary>#.inc#()
|
||||||
<unary>#
|
<unary>#
|
||||||
}
|
}
|
||||||
|
|
||||||
lval x2: <implicit> = {
|
lval x2: <implicit> = {
|
||||||
lval <unary>: <implicit> = x#.i#
|
lval <unary>: <implicit> = x#.i#
|
||||||
lval <unary-result>: <implicit> = inc#(<unary>#)
|
lval <unary-result>: <implicit> = <unary>#.inc#()
|
||||||
x#.i# = <unary-result>#
|
x#.i# = <unary-result>#
|
||||||
<unary-result>#
|
<unary-result>#
|
||||||
}
|
}
|
||||||
@@ -61,13 +61,13 @@ FILE: unary.kt
|
|||||||
public? final? fun test3(arr: Array<Int>): kotlin/Unit {
|
public? final? fun test3(arr: Array<Int>): kotlin/Unit {
|
||||||
lval x1: <implicit> = {
|
lval x1: <implicit> = {
|
||||||
lval <unary>: <implicit> = arr#.get#(Int(0))
|
lval <unary>: <implicit> = arr#.get#(Int(0))
|
||||||
arr#.set#(Int(0), inc#(<unary>#))
|
arr#.set#(Int(0), <unary>#.inc#())
|
||||||
<unary>#
|
<unary>#
|
||||||
}
|
}
|
||||||
|
|
||||||
lval x2: <implicit> = {
|
lval x2: <implicit> = {
|
||||||
lval <unary>: <implicit> = arr#.get#(Int(1))
|
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>#)
|
arr#.set#(Int(1), <unary-result>#)
|
||||||
<unary-result>#
|
<unary-result>#
|
||||||
}
|
}
|
||||||
@@ -85,13 +85,13 @@ FILE: unary.kt
|
|||||||
public? final? fun test4(y: Y): kotlin/Unit {
|
public? final? fun test4(y: Y): kotlin/Unit {
|
||||||
lval x1: <implicit> = {
|
lval x1: <implicit> = {
|
||||||
lval <unary>: <implicit> = y#.arr#.get#(Int(0))
|
lval <unary>: <implicit> = y#.arr#.get#(Int(0))
|
||||||
y#.arr#.set#(Int(0), inc#(<unary>#))
|
y#.arr#.set#(Int(0), <unary>#.inc#())
|
||||||
<unary>#
|
<unary>#
|
||||||
}
|
}
|
||||||
|
|
||||||
lval x2: <implicit> = {
|
lval x2: <implicit> = {
|
||||||
lval <unary>: <implicit> = y#.arr#.get#(Int(1))
|
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>#)
|
y#.arr#.set#(Int(1), <unary-result>#)
|
||||||
<unary-result>#
|
<unary-result>#
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ FILE: while.kt
|
|||||||
lvar k: <implicit> = Int(0)
|
lvar k: <implicit> = Int(0)
|
||||||
some@while(<(k#, limit#)) {
|
some@while(<(k#, limit#)) {
|
||||||
lval <unary>: <implicit> = k#
|
lval <unary>: <implicit> = k#
|
||||||
k# = inc#(<unary>#)
|
k# = <unary>#.inc#()
|
||||||
<unary>#
|
<unary>#
|
||||||
println#(k#)
|
println#(k#)
|
||||||
while(==(k#, Int(13))) {
|
while(==(k#, Int(13))) {
|
||||||
lval <unary>: <implicit> = k#
|
lval <unary>: <implicit> = k#
|
||||||
k# = inc#(<unary>#)
|
k# = <unary>#.inc#()
|
||||||
<unary>#
|
<unary>#
|
||||||
when () {
|
when () {
|
||||||
<(k#, limit#) -> {
|
<(k#, limit#) -> {
|
||||||
@@ -35,7 +35,7 @@ FILE: while.kt
|
|||||||
lvar k: <implicit> = limit#
|
lvar k: <implicit> = limit#
|
||||||
do {
|
do {
|
||||||
lval <unary>: <implicit> = k#
|
lval <unary>: <implicit> = k#
|
||||||
k# = dec#(<unary>#)
|
k# = <unary>#.dec#()
|
||||||
<unary>#
|
<unary>#
|
||||||
println#(k#)
|
println#(k#)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user