Files
kotlin-fork/compiler/testData/ir/irText/js/dynamic/dynamicMemberIncrementDecrement.fir.ir.txt
vladislav.grechko 9aa8fb80e7 Set correct IR origins for inc/dec operations
NB: in order to produce correct IR origins, the source element kinds for
some FIR elements has been changed. As a side effect, mapping PSI to FIR
slightly changed: namely, for `a[b]++`, `a[b]` used to be mapped on
`set` call or callable reference, but now it is mapped on `get` call.

^KT-61891: Fixed
^KT-64387: Fixed
2024-01-30 14:26:10 +00:00

98 lines
6.9 KiB
Plaintext
Vendored

FILE fqName:<root> fileName:/dynamicMemberIncrementDecrement.kt
FUN name:testMemberIncrementDecrement visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Unit
VALUE_PARAMETER name:d index:0 type:dynamic
BLOCK_BODY
VAR name:t1 type:dynamic [val]
DYN_OP operator=PREFIX_INCREMENT type=dynamic
receiver: GET_VAR 'd: dynamic declared in <root>.testMemberIncrementDecrement' type=dynamic origin=null
VAR name:t2 type:dynamic [val]
DYN_OP operator=PREFIX_DECREMENT type=dynamic
receiver: GET_VAR 'd: dynamic declared in <root>.testMemberIncrementDecrement' type=dynamic origin=null
VAR name:t3 type:dynamic [val]
DYN_OP operator=POSTFIX_INCREMENT type=dynamic
receiver: DYN_MEMBER memberName='postfixIncr' type=dynamic
GET_VAR 'd: dynamic declared in <root>.testMemberIncrementDecrement' type=dynamic origin=null
VAR name:t4 type:dynamic [val]
DYN_OP operator=POSTFIX_DECREMENT type=dynamic
receiver: DYN_MEMBER memberName='postfixDecr' type=dynamic
GET_VAR 'd: dynamic declared in <root>.testMemberIncrementDecrement' type=dynamic origin=null
FUN name:testSafeMemberIncrementDecrement visibility:public modality:FINAL <> (d:dynamic) returnType:kotlin.Unit
VALUE_PARAMETER name:d index:0 type:dynamic
BLOCK_BODY
VAR name:t1 type:dynamic [val]
BLOCK type=dynamic origin=SAFE_CALL
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:dynamic [val]
GET_VAR 'd: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
WHEN type=dynamic origin=null
BRANCH
if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'val tmp_0: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
arg1: CONST Null type=kotlin.Nothing? value=null
then: CONST Null type=kotlin.Nothing? value=null
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
then: BLOCK type=dynamic origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:dynamic [val]
GET_VAR 'val tmp_0: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
DYN_OP operator=EQ type=kotlin.Unit
receiver: DYN_MEMBER memberName='prefixIncr' type=kotlin.Unit
GET_VAR 'val tmp_1: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
0: DYN_OP operator=PREFIX_INCREMENT type=dynamic
receiver: DYN_MEMBER memberName='prefixIncr' type=dynamic
GET_VAR 'val tmp_1: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
DYN_MEMBER memberName='prefixIncr' type=dynamic
GET_VAR 'val tmp_1: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
VAR name:t2 type:dynamic [val]
BLOCK type=dynamic origin=SAFE_CALL
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:dynamic [val]
GET_VAR 'd: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
WHEN type=dynamic origin=null
BRANCH
if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'val tmp_2: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
arg1: CONST Null type=kotlin.Nothing? value=null
then: CONST Null type=kotlin.Nothing? value=null
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
then: BLOCK type=dynamic origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:dynamic [val]
GET_VAR 'val tmp_2: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
DYN_OP operator=EQ type=kotlin.Unit
receiver: DYN_MEMBER memberName='prefixDecr' type=kotlin.Unit
GET_VAR 'val tmp_3: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
0: DYN_OP operator=PREFIX_DECREMENT type=dynamic
receiver: DYN_MEMBER memberName='prefixDecr' type=dynamic
GET_VAR 'val tmp_3: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
DYN_MEMBER memberName='prefixDecr' type=dynamic
GET_VAR 'val tmp_3: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
VAR name:t3 type:dynamic [val]
BLOCK type=dynamic origin=SAFE_CALL
VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:dynamic [val]
GET_VAR 'd: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
WHEN type=dynamic origin=null
BRANCH
if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'val tmp_4: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
arg1: CONST Null type=kotlin.Nothing? value=null
then: CONST Null type=kotlin.Nothing? value=null
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
then: DYN_OP operator=POSTFIX_INCREMENT type=dynamic
receiver: DYN_MEMBER memberName='postfixIncr' type=dynamic
GET_VAR 'val tmp_4: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
VAR name:t4 type:dynamic [val]
BLOCK type=dynamic origin=SAFE_CALL
VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:dynamic [val]
GET_VAR 'd: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
WHEN type=dynamic origin=null
BRANCH
if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'val tmp_5: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null
arg1: CONST Null type=kotlin.Nothing? value=null
then: CONST Null type=kotlin.Nothing? value=null
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
then: DYN_OP operator=POSTFIX_DECREMENT type=dynamic
receiver: DYN_MEMBER memberName='postfixDecr' type=dynamic
GET_VAR 'val tmp_5: dynamic declared in <root>.testSafeMemberIncrementDecrement' type=dynamic origin=null