[FIR] Let prefix inc/dec call getter twice for compatibility with K1

#KT-57179 Fixed
This commit is contained in:
Kirill Rakhman
2023-03-15 17:24:40 +01:00
committed by Space Team
parent fea344faa4
commit 45d2424ad8
50 changed files with 1391 additions and 794 deletions
@@ -27,6 +27,104 @@ FILE fqName:<root> fileName:/incrementDecrement.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-arr> (): kotlin.IntArray declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:arr type:kotlin.IntArray visibility:private [final,static]' type=kotlin.IntArray origin=null
CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C
CONSTRUCTOR visibility:public <> () returnType:<root>.C [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:p visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p> visibility:public modality:FINAL <> ($this:<root>.C) returnType:kotlin.Int
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p> (): kotlin.Int declared in <root>.C'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<get-p>' type=<root>.C origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-p> visibility:public modality:FINAL <> ($this:<root>.C, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<set-p>' type=<root>.C origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in <root>.C.<set-p>' type=kotlin.Int origin=null
FUN name:get visibility:public modality:FINAL <> ($this:<root>.C, i:kotlin.Int) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:i index:0 type:kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C'
GET_VAR 'i: kotlin.Int declared in <root>.C.get' type=kotlin.Int origin=null
FUN name:set visibility:public modality:FINAL <> ($this:<root>.C, i:kotlin.Int, value:kotlin.Int) returnType:kotlin.Unit [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:i index:0 type:kotlin.Int
VALUE_PARAMETER name:value index:1 type:kotlin.Int
BLOCK_BODY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.O
CONSTRUCTOR visibility:private <> () returnType:<root>.O [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:p visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p> visibility:public modality:FINAL <> ($this:<root>.O) returnType:kotlin.Int
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.O
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p> (): kotlin.Int declared in <root>.O'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.O declared in <root>.O.<get-p>' type=<root>.O origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-p> visibility:public modality:FINAL <> ($this:<root>.O, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.O
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.O declared in <root>.O.<set-p>' type=<root>.O origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in <root>.O.<set-p>' type=kotlin.Int origin=null
FUN name:get visibility:public modality:FINAL <> ($this:<root>.O, i:kotlin.Int) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.O
VALUE_PARAMETER name:i index:0 type:kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O'
GET_VAR 'i: kotlin.Int declared in <root>.O.get' type=kotlin.Int origin=null
FUN name:set visibility:public modality:FINAL <> ($this:<root>.O, i:kotlin.Int, value:kotlin.Int) returnType:kotlin.Unit [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.O
VALUE_PARAMETER name:i index:0 type:kotlin.Int
VALUE_PARAMETER name:value index:1 type:kotlin.Int
BLOCK_BODY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:testVarPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:x type:kotlin.Int [var]
@@ -67,103 +165,327 @@ FILE fqName:<root> fileName:/incrementDecrement.kt
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlin.Int [val]
CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.Unit origin=EQ
<set-?>: GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.testPropPrefix' type=kotlin.Int origin=null
GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.testPropPrefix' type=kotlin.Int origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.Int [val]
CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.Unit origin=EQ
<set-?>: GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.testPropPrefix' type=kotlin.Int origin=null
GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.testPropPrefix' type=kotlin.Int origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
FUN name:testPropPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlin.Int [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_4: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_4: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlin.Int [val]
CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=GET_PROPERTY
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.Unit origin=EQ
<set-?>: GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
FUN name:testArrayPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_4: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_4: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_4: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlin.Int [val]
CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_6: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_7: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_6: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_7: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
value: GET_VAR 'val tmp_8: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
GET_VAR 'val tmp_8: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlin.Int [val]
CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_9: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_10: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_9: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_10: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
value: GET_VAR 'val tmp_11: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
GET_VAR 'val tmp_11: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_6: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_7: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_6: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_7: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
FUN name:testArrayPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlin.IntArray [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:kotlin.Int [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:kotlin.Int [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_12: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_13: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_8: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_9: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_12: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_13: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_8: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_9: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_14: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_14: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_10: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_10: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:kotlin.IntArray [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_16 type:kotlin.Int [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_17 type:kotlin.Int [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_15: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_16: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_11: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_12: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_15: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_16: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_11: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_12: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_17: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_17: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_13: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_13: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
FUN name:testClassPropPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_14: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_14: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_14: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_15: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_15: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_15: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
FUN name:testClassPropPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_16 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_17 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_16: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_16: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_17: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_17: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_18 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_19 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_18: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_18: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_19: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_19: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
FUN name:testClassOperatorPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_20 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_21 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_20: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_21: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_20: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_21: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_20: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_21: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_22 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_23 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_22: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_23: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_22: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_23: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_22: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_23: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
FUN name:testClassOperatorPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_24 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_25 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_26 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_24: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_25: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_24: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_25: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_26: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_26: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_27 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_28 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_29 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_27: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_28: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_27: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_28: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_29: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_29: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
FUN name:testObjectPropPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
FUN name:testObjectPropPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_30 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_30: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_30: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_31 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_31: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_31: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
FUN name:testObjectOperatorPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_32 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_33 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_32: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_33: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_32: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_33: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_32: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_33: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_34 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_35 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_34: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_35: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_34: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_35: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_34: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_35: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
FUN name:testObjectOperatorPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_36 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_37 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_38 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_36: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_37: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_36: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_37: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_38: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_38: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_39 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_40 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_41 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_39: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_40: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_39: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_40: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_41: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_41: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
@@ -7,6 +7,48 @@ val arr: IntArray
field = intArrayOf(elements = [1, 2, 3])
get
class C {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var p: Int
field = 0
get
set
operator fun get(i: Int): Int {
return i
}
operator fun set(i: Int, value: Int) {
}
}
object O {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var p: Int
field = 0
get
set
operator fun get(i: Int): Int {
return i
}
operator fun set(i: Int, value: Int) {
}
}
fun testVarPrefix() {
var x: Int = 0
val x1: Int = { // BLOCK
@@ -35,14 +77,12 @@ fun testVarPostfix() {
fun testPropPrefix() {
val p1: Int = { // BLOCK
val <unary-result>: Int = <get-p>().inc()
<set-p>(<set-?> = <unary-result>)
<unary-result>
<set-p>(<set-?> = <get-p>().inc())
<get-p>()
}
val p2: Int = { // BLOCK
val <unary-result>: Int = <get-p>().dec()
<set-p>(<set-?> = <unary-result>)
<unary-result>
<set-p>(<set-?> = <get-p>().dec())
<get-p>()
}
}
@@ -53,9 +93,9 @@ fun testPropPostfix() {
<unary>
}
val p2: Int = { // BLOCK
val <unary-result>: Int = <get-p>().dec()
<set-p>(<set-?> = <unary-result>)
<unary-result>
val <unary>: Int = <get-p>()
<set-p>(<set-?> = <unary>.dec())
<unary>
}
}
@@ -63,16 +103,14 @@ fun testArrayPrefix() {
val a1: Int = { // BLOCK
val <array>: IntArray = <get-arr>()
val <index_0>: Int = 0
val <unary-result>: Int = <array>.get(index = <index_0>).inc()
<array>.set(index = <index_0>, value = <unary-result>)
<unary-result>
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).inc())
<array>.get(index = <index_0>)
}
val a2: Int = { // BLOCK
val <array>: IntArray = <get-arr>()
val <index_0>: Int = 0
val <unary-result>: Int = <array>.get(index = <index_0>).dec()
<array>.set(index = <index_0>, value = <unary-result>)
<unary-result>
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).dec())
<array>.get(index = <index_0>)
}
}
@@ -92,3 +130,119 @@ fun testArrayPostfix() {
<unary>
}
}
fun testClassPropPrefix() {
val p1: Int = { // BLOCK
val <receiver>: C = C()
<receiver>.<set-p>(<set-?> = <receiver>.<get-p>().inc())
<receiver>.<get-p>()
}
val p2: Int = { // BLOCK
val <receiver>: C = C()
<receiver>.<set-p>(<set-?> = <receiver>.<get-p>().dec())
<receiver>.<get-p>()
}
}
fun testClassPropPostfix() {
val p1: Int = { // BLOCK
val <receiver>: C = C()
val <unary>: Int = <receiver>.<get-p>()
<receiver>.<set-p>(<set-?> = <unary>.inc())
<unary>
}
val p2: Int = { // BLOCK
val <receiver>: C = C()
val <unary>: Int = <receiver>.<get-p>()
<receiver>.<set-p>(<set-?> = <unary>.dec())
<unary>
}
}
fun testClassOperatorPrefix() {
val a1: Int = { // BLOCK
val <array>: C = C()
val <index_0>: Int = 0
<array>.set(i = <index_0>, value = <array>.get(i = <index_0>).inc())
<array>.get(i = <index_0>)
}
val a2: Int = { // BLOCK
val <array>: C = C()
val <index_0>: Int = 0
<array>.set(i = <index_0>, value = <array>.get(i = <index_0>).dec())
<array>.get(i = <index_0>)
}
}
fun testClassOperatorPostfix() {
val a1: Int = { // BLOCK
val <array>: C = C()
val <index_0>: Int = 0
val <unary>: Int = <array>.get(i = <index_0>)
<array>.set(i = <index_0>, value = <unary>.inc())
<unary>
}
val a2: Int = { // BLOCK
val <array>: C = C()
val <index_0>: Int = 0
val <unary>: Int = <array>.get(i = <index_0>)
<array>.set(i = <index_0>, value = <unary>.dec())
<unary>
}
}
fun testObjectPropPrefix() {
val p1: Int = { // BLOCK
O.<set-p>(<set-?> = O.<get-p>().inc())
O.<get-p>()
}
val p2: Int = { // BLOCK
O.<set-p>(<set-?> = O.<get-p>().dec())
O.<get-p>()
}
}
fun testObjectPropPostfix() {
val p1: Int = { // BLOCK
val <unary>: Int = O.<get-p>()
O.<set-p>(<set-?> = <unary>.inc())
<unary>
}
val p2: Int = { // BLOCK
val <unary>: Int = O.<get-p>()
O.<set-p>(<set-?> = <unary>.dec())
<unary>
}
}
fun testObjectOperatorPrefix() {
val a1: Int = { // BLOCK
val <array>: O = O
val <index_0>: Int = 0
<array>.set(i = <index_0>, value = <array>.get(i = <index_0>).inc())
<array>.get(i = <index_0>)
}
val a2: Int = { // BLOCK
val <array>: O = O
val <index_0>: Int = 0
<array>.set(i = <index_0>, value = <array>.get(i = <index_0>).dec())
<array>.get(i = <index_0>)
}
}
fun testObjectOperatorPostfix() {
val a1: Int = { // BLOCK
val <array>: O = O
val <index_0>: Int = 0
val <unary>: Int = <array>.get(i = <index_0>)
<array>.set(i = <index_0>, value = <unary>.inc())
<unary>
}
val a2: Int = { // BLOCK
val <array>: O = O
val <index_0>: Int = 0
val <unary>: Int = <array>.get(i = <index_0>)
<array>.set(i = <index_0>, value = <unary>.dec())
<unary>
}
}
@@ -27,6 +27,104 @@ FILE fqName:<root> fileName:/incrementDecrement.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-arr> (): kotlin.IntArray declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:arr type:kotlin.IntArray visibility:private [final,static]' type=kotlin.IntArray origin=null
CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C
CONSTRUCTOR visibility:public <> () returnType:<root>.C [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:p visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p> visibility:public modality:FINAL <> ($this:<root>.C) returnType:kotlin.Int
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p> (): kotlin.Int declared in <root>.C'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<get-p>' type=<root>.C origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-p> visibility:public modality:FINAL <> ($this:<root>.C, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<set-p>' type=<root>.C origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in <root>.C.<set-p>' type=kotlin.Int origin=null
FUN name:get visibility:public modality:FINAL <> ($this:<root>.C, i:kotlin.Int) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:i index:0 type:kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C'
GET_VAR 'i: kotlin.Int declared in <root>.C.get' type=kotlin.Int origin=null
FUN name:set visibility:public modality:FINAL <> ($this:<root>.C, i:kotlin.Int, value:kotlin.Int) returnType:kotlin.Unit [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:i index:0 type:kotlin.Int
VALUE_PARAMETER name:value index:1 type:kotlin.Int
BLOCK_BODY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.O
CONSTRUCTOR visibility:private <> () returnType:<root>.O [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:p visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p> visibility:public modality:FINAL <> ($this:<root>.O) returnType:kotlin.Int
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.O
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p> (): kotlin.Int declared in <root>.O'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.O declared in <root>.O.<get-p>' type=<root>.O origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-p> visibility:public modality:FINAL <> ($this:<root>.O, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.O
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.O declared in <root>.O.<set-p>' type=<root>.O origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in <root>.O.<set-p>' type=kotlin.Int origin=null
FUN name:get visibility:public modality:FINAL <> ($this:<root>.O, i:kotlin.Int) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.O
VALUE_PARAMETER name:i index:0 type:kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O'
GET_VAR 'i: kotlin.Int declared in <root>.O.get' type=kotlin.Int origin=null
FUN name:set visibility:public modality:FINAL <> ($this:<root>.O, i:kotlin.Int, value:kotlin.Int) returnType:kotlin.Unit [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.O
VALUE_PARAMETER name:i index:0 type:kotlin.Int
VALUE_PARAMETER name:value index:1 type:kotlin.Int
BLOCK_BODY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:testVarPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:x type:kotlin.Int [var]
@@ -91,77 +189,323 @@ FILE fqName:<root> fileName:/incrementDecrement.kt
$this: GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_DECR
BLOCK type=kotlin.Int origin=PREFIX_DECR
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.Unit origin=PREFIX_DECR
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=PREFIX_DECR
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=PREFIX_DECR
BLOCK type=kotlin.Int origin=POSTFIX_DECR
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>' type=kotlin.Int origin=POSTFIX_DECR
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.Unit origin=POSTFIX_DECR
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.testPropPostfix' type=kotlin.Int origin=null
FUN name:testArrayPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.IntArray [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlin.Int [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_3: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_4: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_4: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_3: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_4: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_4: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_3: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_4: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_4: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_5: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlin.IntArray [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlin.Int [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_5: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_6: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_6: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_7: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_5: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_6: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_6: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_7: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_5: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_6: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_6: kotlin.IntArray [val] declared in <root>.testArrayPrefix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_7: kotlin.Int [val] declared in <root>.testArrayPrefix' type=kotlin.Int origin=null
FUN name:testArrayPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:kotlin.IntArray [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_7: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_8: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_8: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_9: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_7: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_8: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_8: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_9: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_9: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_9: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_10: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_10: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:kotlin.IntArray [val]
VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlin.IntArray [val]
CALL 'public final fun <get-arr> (): kotlin.IntArray declared in <root>' type=kotlin.IntArray origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in kotlin.IntArray' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_10: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_11: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_11: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_12: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in kotlin.IntArray' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_10: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_11: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_11: kotlin.IntArray [val] declared in <root>.testArrayPostfix' type=kotlin.IntArray origin=null
index: GET_VAR 'val tmp_12: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_12: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_12: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_13: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_13: kotlin.Int [val] declared in <root>.testArrayPostfix' type=kotlin.Int origin=null
FUN name:testClassPropPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
BLOCK type=kotlin.Int origin=PREFIX_INCR
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_14: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_14: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_14: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
BLOCK type=kotlin.Int origin=PREFIX_DECR
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_15: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_15: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_15: <root>.C [val] declared in <root>.testClassPropPrefix' type=<root>.C origin=null
FUN name:testClassPropPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_16 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_17 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_16: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_16: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_17: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_17: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_18 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_19 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.C' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_18: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_18: <root>.C [val] declared in <root>.testClassPropPostfix' type=<root>.C origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_19: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_19: kotlin.Int [val] declared in <root>.testClassPropPostfix' type=kotlin.Int origin=null
FUN name:testClassOperatorPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_20 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_21 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_20: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_21: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_20: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_21: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_20: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_21: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_22 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_23 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_22: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_23: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_22: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_23: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_22: <root>.C [val] declared in <root>.testClassOperatorPrefix' type=<root>.C origin=null
i: GET_VAR 'val tmp_23: kotlin.Int [val] declared in <root>.testClassOperatorPrefix' type=kotlin.Int origin=null
FUN name:testClassOperatorPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_24 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_25 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_26 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_24: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_25: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_24: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_25: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_26: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_26: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_27 type:<root>.C [val]
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.C' type=<root>.C origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_28 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_29 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.C' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_27: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_28: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.C' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_27: <root>.C [val] declared in <root>.testClassOperatorPostfix' type=<root>.C origin=null
i: GET_VAR 'val tmp_28: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_29: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_29: kotlin.Int [val] declared in <root>.testClassOperatorPostfix' type=kotlin.Int origin=null
FUN name:testObjectPropPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_30 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
BLOCK type=kotlin.Int origin=PREFIX_INCR
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_30: <root>.O [val] declared in <root>.testObjectPropPrefix' type=<root>.O origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_30: <root>.O [val] declared in <root>.testObjectPropPrefix' type=<root>.O origin=null
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_30: <root>.O [val] declared in <root>.testObjectPropPrefix' type=<root>.O origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_31 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
BLOCK type=kotlin.Int origin=PREFIX_DECR
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_31: <root>.O [val] declared in <root>.testObjectPropPrefix' type=<root>.O origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_31: <root>.O [val] declared in <root>.testObjectPropPrefix' type=<root>.O origin=null
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_31: <root>.O [val] declared in <root>.testObjectPropPrefix' type=<root>.O origin=null
FUN name:testObjectPropPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:p1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_32 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_33 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_32: <root>.O [val] declared in <root>.testObjectPropPostfix' type=<root>.O origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_32: <root>.O [val] declared in <root>.testObjectPropPostfix' type=<root>.O origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_33: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_33: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
VAR name:p2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_34 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_35 type:kotlin.Int [val]
CALL 'public final fun <get-p> (): kotlin.Int declared in <root>.O' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_34: <root>.O [val] declared in <root>.testObjectPropPostfix' type=<root>.O origin=null
CALL 'public final fun <set-p> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.O' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_34: <root>.O [val] declared in <root>.testObjectPropPostfix' type=<root>.O origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_35: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_35: kotlin.Int [val] declared in <root>.testObjectPropPostfix' type=kotlin.Int origin=null
FUN name:testObjectOperatorPrefix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_36 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_37 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_36: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_37: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_36: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_37: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_36: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_37: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_38 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_39 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_38: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_39: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_38: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_39: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_38: <root>.O [val] declared in <root>.testObjectOperatorPrefix' type=<root>.O origin=null
i: GET_VAR 'val tmp_39: kotlin.Int [val] declared in <root>.testObjectOperatorPrefix' type=kotlin.Int origin=null
FUN name:testObjectOperatorPostfix visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a1 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_40 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_41 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_42 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_40: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_41: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_40: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_41: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_42: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_42: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
VAR name:a2 type:kotlin.Int [val]
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_43 type:<root>.O [val]
GET_OBJECT 'CLASS OBJECT name:O modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.O
VAR IR_TEMPORARY_VARIABLE name:tmp_44 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_45 type:kotlin.Int [val]
CALL 'public final fun get (i: kotlin.Int): kotlin.Int [operator] declared in <root>.O' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_43: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_44: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
CALL 'public final fun set (i: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in <root>.O' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_43: <root>.O [val] declared in <root>.testObjectOperatorPostfix' type=<root>.O origin=null
i: GET_VAR 'val tmp_44: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_45: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
GET_VAR 'val tmp_45: kotlin.Int [val] declared in <root>.testObjectOperatorPostfix' type=kotlin.Int origin=null
@@ -1,6 +1,18 @@
var p: Int = 0
val arr = intArrayOf(1, 2, 3)
class C {
var p: Int = 0
operator fun get(i: Int) = i
operator fun set(i: Int, value: Int) {}
}
object O {
var p: Int = 0
operator fun get(i: Int) = i
operator fun set(i: Int, value: Int) {}
}
fun testVarPrefix() {
var x = 0
val x1 = ++x
@@ -20,7 +32,7 @@ fun testPropPrefix() {
fun testPropPostfix() {
val p1 = p++
val p2 = --p
val p2 = p--
}
fun testArrayPrefix() {
@@ -31,4 +43,44 @@ fun testArrayPrefix() {
fun testArrayPostfix() {
val a1 = arr[0]++
val a2 = arr[0]--
}
}
fun testClassPropPrefix() {
val p1 = ++C().p
val p2 = --C().p
}
fun testClassPropPostfix() {
val p1 = C().p++
val p2 = C().p--
}
fun testClassOperatorPrefix() {
val a1 = ++C()[0]
val a2 = --C()[0]
}
fun testClassOperatorPostfix() {
val a1 = C()[0]++
val a2 = C()[0]--
}
fun testObjectPropPrefix() {
val p1 = ++O.p
val p2 = --O.p
}
fun testObjectPropPostfix() {
val p1 = O.p++
val p2 = O.p--
}
fun testObjectOperatorPrefix() {
val a1 = ++O[0]
val a2 = --O[0]
}
fun testObjectOperatorPostfix() {
val a1 = O[0]++
val a2 = O[0]--
}
@@ -7,6 +7,48 @@ val arr: IntArray
field = intArrayOf(elements = [1, 2, 3])
get
class C {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var p: Int
field = 0
get
set
operator fun get(i: Int): Int {
return i
}
operator fun set(i: Int, value: Int) {
}
}
object O {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var p: Int
field = 0
get
set
operator fun get(i: Int): Int {
return i
}
operator fun set(i: Int, value: Int) {
}
}
fun testVarPrefix() {
var x: Int = 0
val x1: Int = { // BLOCK
@@ -58,8 +100,9 @@ fun testPropPostfix() {
}
val p2: Int = { // BLOCK
{ // BLOCK
<set-p>(<set-?> = <get-p>().dec())
<get-p>()
val tmp1: Int = <get-p>()
<set-p>(<set-?> = tmp1.dec())
tmp1
}
}
}
@@ -95,3 +138,139 @@ fun testArrayPostfix() {
tmp5
}
}
fun testClassPropPrefix() {
val p1: Int = { // BLOCK
val tmp0_this: C = C()
{ // BLOCK
tmp0_this.<set-p>(<set-?> = tmp0_this.<get-p>().inc())
tmp0_this.<get-p>()
}
}
val p2: Int = { // BLOCK
val tmp1_this: C = C()
{ // BLOCK
tmp1_this.<set-p>(<set-?> = tmp1_this.<get-p>().dec())
tmp1_this.<get-p>()
}
}
}
fun testClassPropPostfix() {
val p1: Int = { // BLOCK
val tmp0_this: C = C()
{ // BLOCK
val tmp1: Int = tmp0_this.<get-p>()
tmp0_this.<set-p>(<set-?> = tmp1.inc())
tmp1
}
}
val p2: Int = { // BLOCK
val tmp2_this: C = C()
{ // BLOCK
val tmp3: Int = tmp2_this.<get-p>()
tmp2_this.<set-p>(<set-?> = tmp3.dec())
tmp3
}
}
}
fun testClassOperatorPrefix() {
val a1: Int = { // BLOCK
val tmp0_array: C = C()
val tmp1_index0: Int = 0
tmp0_array.set(i = tmp1_index0, value = tmp0_array.get(i = tmp1_index0).inc())
tmp0_array.get(i = tmp1_index0)
}
val a2: Int = { // BLOCK
val tmp2_array: C = C()
val tmp3_index0: Int = 0
tmp2_array.set(i = tmp3_index0, value = tmp2_array.get(i = tmp3_index0).dec())
tmp2_array.get(i = tmp3_index0)
}
}
fun testClassOperatorPostfix() {
val a1: Int = { // BLOCK
val tmp0_array: C = C()
val tmp1_index0: Int = 0
val tmp2: Int = tmp0_array.get(i = tmp1_index0)
tmp0_array.set(i = tmp1_index0, value = tmp2.inc())
tmp2
}
val a2: Int = { // BLOCK
val tmp3_array: C = C()
val tmp4_index0: Int = 0
val tmp5: Int = tmp3_array.get(i = tmp4_index0)
tmp3_array.set(i = tmp4_index0, value = tmp5.dec())
tmp5
}
}
fun testObjectPropPrefix() {
val p1: Int = { // BLOCK
val tmp0_this: O = O
{ // BLOCK
tmp0_this.<set-p>(<set-?> = tmp0_this.<get-p>().inc())
tmp0_this.<get-p>()
}
}
val p2: Int = { // BLOCK
val tmp1_this: O = O
{ // BLOCK
tmp1_this.<set-p>(<set-?> = tmp1_this.<get-p>().dec())
tmp1_this.<get-p>()
}
}
}
fun testObjectPropPostfix() {
val p1: Int = { // BLOCK
val tmp0_this: O = O
{ // BLOCK
val tmp1: Int = tmp0_this.<get-p>()
tmp0_this.<set-p>(<set-?> = tmp1.inc())
tmp1
}
}
val p2: Int = { // BLOCK
val tmp2_this: O = O
{ // BLOCK
val tmp3: Int = tmp2_this.<get-p>()
tmp2_this.<set-p>(<set-?> = tmp3.dec())
tmp3
}
}
}
fun testObjectOperatorPrefix() {
val a1: Int = { // BLOCK
val tmp0_array: O = O
val tmp1_index0: Int = 0
tmp0_array.set(i = tmp1_index0, value = tmp0_array.get(i = tmp1_index0).inc())
tmp0_array.get(i = tmp1_index0)
}
val a2: Int = { // BLOCK
val tmp2_array: O = O
val tmp3_index0: Int = 0
tmp2_array.set(i = tmp3_index0, value = tmp2_array.get(i = tmp3_index0).dec())
tmp2_array.get(i = tmp3_index0)
}
}
fun testObjectOperatorPostfix() {
val a1: Int = { // BLOCK
val tmp0_array: O = O
val tmp1_index0: Int = 0
val tmp2: Int = tmp0_array.get(i = tmp1_index0)
tmp0_array.set(i = tmp1_index0, value = tmp2.inc())
tmp2
}
val a2: Int = { // BLOCK
val tmp3_array: O = O
val tmp4_index0: Int = 0
val tmp5: Int = tmp3_array.get(i = tmp4_index0)
tmp3_array.set(i = tmp4_index0, value = tmp5.dec())
tmp5
}
}