[FIR] Extract LHS receiver of assignment operator statements

#KT-53490 Fixed
This commit is contained in:
Brian Norman
2023-06-30 17:13:05 +03:00
committed by Space Team
parent 14276642d4
commit 10ed26991d
45 changed files with 1894 additions and 124 deletions
@@ -0,0 +1,460 @@
FILE fqName:foo fileName:/AssignmentOperator.kt
CLASS CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.A
CONSTRUCTOR visibility:public <> () returnType:foo.A [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:prop visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-prop> visibility:public modality:FINAL <> ($this:foo.A) returnType:kotlin.Int
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.A
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-prop> (): kotlin.Int declared in foo.A'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: foo.A declared in foo.A.<get-prop>' type=foo.A origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-prop> visibility:public modality:FINAL <> ($this:foo.A, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.A
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: foo.A declared in foo.A.<set-prop>' type=foo.A origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in foo.A.<set-prop>' type=kotlin.Int origin=null
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 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:B modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.B
CONSTRUCTOR visibility:private <> () returnType:foo.B [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:prop visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-prop> visibility:public modality:FINAL <> ($this:foo.B) returnType:kotlin.Int
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.B
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-prop> (): kotlin.Int declared in foo.B'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: foo.B declared in foo.B.<get-prop>' type=foo.B origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-prop> visibility:public modality:FINAL <> ($this:foo.B, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.B
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: foo.B declared in foo.B.<set-prop>' type=foo.B origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in foo.B.<set-prop>' type=kotlin.Int origin=null
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 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
PROPERTY name:array visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:array type:kotlin.Array<kotlin.Int> visibility:private [final,static]
EXPRESSION_BODY
CALL 'public final fun arrayOf <T> (vararg elements: T of kotlin.arrayOf): kotlin.Array<T of kotlin.arrayOf> declared in kotlin' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Int
elements: VARARG type=kotlin.Array<out kotlin.Int> varargElementType=kotlin.Int
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-array> visibility:public modality:FINAL <> () returnType:kotlin.Array<kotlin.Int>
correspondingProperty: PROPERTY name:array visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:array type:kotlin.Array<kotlin.Int> visibility:private [final,static]' type=kotlin.Array<kotlin.Int> origin=null
FUN name:id visibility:public modality:FINAL <T> (t:T of foo.id) returnType:T of foo.id
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
VALUE_PARAMETER name:t index:0 type:T of foo.id
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun id <T> (t: T of foo.id): T of foo.id declared in foo'
GET_VAR 't: T of foo.id declared in foo.id' type=T of foo.id origin=null
FUN name:main visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a type:foo.A [val]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.A' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CONST Int type=kotlin.Int value=10
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_0: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_0: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_1: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun minus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_1: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_2: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_2: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=2
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_3: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun div (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_3: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=5
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_4: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun rem (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_4: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=3
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_5: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_5: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_6: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_6: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_7: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_7: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_8: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_8: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_9: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_9: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_9: foo.A declared in foo.main' type=foo.A origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: GET_VAR 'val tmp_10: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_10: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'val tmp_10: foo.A declared in foo.main' type=foo.A origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_11: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_11: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_12: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_12: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=EQ
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=GET_PROPERTY
$this: GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
index: CONST Int type=kotlin.Int value=0
value: CONST Int type=kotlin.Int value=10
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_13: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_14: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_13: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_14: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_16 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_15: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_16: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun minus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_15: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_16: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_17 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_18 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_17: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_18: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_17: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_18: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=2
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_19 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_20 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_19: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_20: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun div (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_19: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_20: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=5
BLOCK type=kotlin.Unit origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_21 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_22 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_21: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_22: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun rem (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_21: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_22: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=3
VAR IR_TEMPORARY_VARIABLE name:tmp_23 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_24 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_25 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_23: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_24: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_23: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_24: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_25: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
GET_VAR 'val tmp_25: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_26 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_27 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_28 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_26: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_27: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_26: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_27: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_28: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
GET_VAR 'val tmp_28: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_29 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_30 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_29: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_30: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_29: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_30: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_29: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_30: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_31 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_32 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_31: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_32: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_31: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_32: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_31: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_32: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_33 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_34 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_35 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_33: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_34: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_33: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_34: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_35: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
GET_VAR 'val tmp_35: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_36 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
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 (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_36: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_37: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_36: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_37: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_38: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
GET_VAR 'val tmp_38: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_39 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_40 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_39: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_40: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_39: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_40: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_39: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_40: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_41 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_42 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=null
$this: GET_VAR 'val tmp_41: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_42: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_41: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_42: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_41: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_42: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
@@ -0,0 +1,164 @@
package foo
class A {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var prop: Int
field = 0
get
set
}
object B {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var prop: Int
field = 0
get
set
}
val array: Array<Int>
field = arrayOf<Int>(elements = [0])
get
fun <T : Any?> id(t: T): T {
return t
}
fun main() {
val a: A = A()
id<A>(t = a).<set-prop>(<set-?> = 10)
{ // BLOCK
val <receiver>: A = id<A>(t = a)
<receiver>.<set-prop>(<set-?> = <receiver>.<get-prop>().plus(other = 20))
}
{ // BLOCK
val <receiver>: A = id<A>(t = a)
<receiver>.<set-prop>(<set-?> = <receiver>.<get-prop>().minus(other = 20))
}
{ // BLOCK
val <receiver>: A = id<A>(t = a)
<receiver>.<set-prop>(<set-?> = <receiver>.<get-prop>().times(other = 2))
}
{ // BLOCK
val <receiver>: A = id<A>(t = a)
<receiver>.<set-prop>(<set-?> = <receiver>.<get-prop>().div(other = 5))
}
{ // BLOCK
val <receiver>: A = id<A>(t = a)
<receiver>.<set-prop>(<set-?> = <receiver>.<get-prop>().rem(other = 3))
}
{ // BLOCK
val <receiver>: A = id<A>(t = a)
val <unary>: Int = <receiver>.<get-prop>()
<receiver>.<set-prop>(<set-?> = <unary>.inc())
<unary>
} /*~> Unit */
{ // BLOCK
val <receiver>: A = id<A>(t = a)
val <unary>: Int = <receiver>.<get-prop>()
<receiver>.<set-prop>(<set-?> = <unary>.dec())
<unary>
} /*~> Unit */
{ // BLOCK
val <receiver>: A = id<A>(t = a)
<receiver>.<set-prop>(<set-?> = <receiver>.<get-prop>().inc())
<receiver>.<get-prop>()
} /*~> Unit */
{ // BLOCK
val <receiver>: A = id<A>(t = a)
<receiver>.<set-prop>(<set-?> = <receiver>.<get-prop>().dec())
<receiver>.<get-prop>()
} /*~> Unit */
{ // BLOCK
val <unary>: Int = B.<get-prop>()
B.<set-prop>(<set-?> = <unary>.inc())
<unary>
} /*~> Unit */
{ // BLOCK
val <unary>: Int = B.<get-prop>()
B.<set-prop>(<set-?> = <unary>.dec())
<unary>
} /*~> Unit */
{ // BLOCK
B.<set-prop>(<set-?> = B.<get-prop>().inc())
B.<get-prop>()
} /*~> Unit */
{ // BLOCK
B.<set-prop>(<set-?> = B.<get-prop>().dec())
B.<get-prop>()
} /*~> Unit */
id<Array<Int>>(t = <get-array>()).set(index = 0, value = 10)
{ // BLOCK
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).plus(other = 20))
}
{ // BLOCK
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).minus(other = 20))
}
{ // BLOCK
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).times(other = 2))
}
{ // BLOCK
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).div(other = 5))
}
{ // BLOCK
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).rem(other = 3))
}
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
val <unary>: Int = <array>.get(index = <index_0>)
<array>.set(index = <index_0>, value = <unary>.inc())
<unary> /*~> Unit */
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
val <unary>: Int = <array>.get(index = <index_0>)
<array>.set(index = <index_0>, value = <unary>.dec())
<unary> /*~> Unit */
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).inc())
<array>.get(index = <index_0>) /*~> Unit */
val <array>: Array<Int> = id<Array<Int>>(t = <get-array>())
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).dec())
<array>.get(index = <index_0>) /*~> Unit */
val <array>: Array<Int> = <get-array>()
val <index_0>: Int = 0
val <unary>: Int = <array>.get(index = <index_0>)
<array>.set(index = <index_0>, value = <unary>.inc())
<unary> /*~> Unit */
val <array>: Array<Int> = <get-array>()
val <index_0>: Int = 0
val <unary>: Int = <array>.get(index = <index_0>)
<array>.set(index = <index_0>, value = <unary>.dec())
<unary> /*~> Unit */
val <array>: Array<Int> = <get-array>()
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).inc())
<array>.get(index = <index_0>) /*~> Unit */
val <array>: Array<Int> = <get-array>()
val <index_0>: Int = 0
<array>.set(index = <index_0>, value = <array>.get(index = <index_0>).dec())
<array>.get(index = <index_0>) /*~> Unit */
}
@@ -0,0 +1,484 @@
FILE fqName:foo fileName:/AssignmentOperator.kt
CLASS CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.A
CONSTRUCTOR visibility:public <> () returnType:foo.A [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:prop visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-prop> visibility:public modality:FINAL <> ($this:foo.A) returnType:kotlin.Int
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.A
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-prop> (): kotlin.Int declared in foo.A'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: foo.A declared in foo.A.<get-prop>' type=foo.A origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-prop> visibility:public modality:FINAL <> ($this:foo.A, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.A
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: foo.A declared in foo.A.<set-prop>' type=foo.A origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in foo.A.<set-prop>' type=kotlin.Int origin=null
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 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:B modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.B
CONSTRUCTOR visibility:private <> () returnType:foo.B [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:prop visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private
EXPRESSION_BODY
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-prop> visibility:public modality:FINAL <> ($this:foo.B) returnType:kotlin.Int
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.B
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-prop> (): kotlin.Int declared in foo.B'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: foo.B declared in foo.B.<get-prop>' type=foo.B origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-prop> visibility:public modality:FINAL <> ($this:foo.B, <set-?>:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:foo.B
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: foo.B declared in foo.B.<set-prop>' type=foo.B origin=null
value: GET_VAR '<set-?>: kotlin.Int declared in foo.B.<set-prop>' type=kotlin.Int origin=null
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 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
PROPERTY name:array visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:array type:kotlin.Array<kotlin.Int> visibility:private [final,static]
EXPRESSION_BODY
CALL 'public final fun arrayOf <T> (vararg elements: T of kotlin.arrayOf): kotlin.Array<T of kotlin.arrayOf> declared in kotlin' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Int
elements: VARARG type=kotlin.Array<out kotlin.Int> varargElementType=kotlin.Int
CONST Int type=kotlin.Int value=0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-array> visibility:public modality:FINAL <> () returnType:kotlin.Array<kotlin.Int>
correspondingProperty: PROPERTY name:array visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:array type:kotlin.Array<kotlin.Int> visibility:private [final,static]' type=kotlin.Array<kotlin.Int> origin=null
FUN name:id visibility:public modality:FINAL <T> (t:T of foo.id) returnType:T of foo.id
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
VALUE_PARAMETER name:t index:0 type:T of foo.id
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun id <T> (t: T of foo.id): T of foo.id declared in foo'
GET_VAR 't: T of foo.id declared in foo.id' type=T of foo.id origin=null
FUN name:main visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a type:foo.A [val]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.A' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=EQ
$this: CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CONST Int type=kotlin.Int value=10
BLOCK type=kotlin.Unit origin=PLUSEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=PLUSEQ
$this: GET_VAR 'val tmp_0: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PLUSEQ
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=PLUSEQ
$this: GET_VAR 'val tmp_0: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=MINUSEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=MINUSEQ
$this: GET_VAR 'val tmp_1: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun minus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=MINUSEQ
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=MINUSEQ
$this: GET_VAR 'val tmp_1: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=MULTEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=MULTEQ
$this: GET_VAR 'val tmp_2: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=MULTEQ
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=MULTEQ
$this: GET_VAR 'val tmp_2: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=2
BLOCK type=kotlin.Unit origin=DIVEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=DIVEQ
$this: GET_VAR 'val tmp_3: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun div (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=DIVEQ
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=DIVEQ
$this: GET_VAR 'val tmp_3: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=5
BLOCK type=kotlin.Unit origin=PERCEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=PERCEQ
$this: GET_VAR 'val tmp_4: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun rem (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PERCEQ
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=PERCEQ
$this: GET_VAR 'val tmp_4: foo.A declared in foo.main' type=foo.A origin=null
other: CONST Int type=kotlin.Int value=3
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_5: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_5: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_6: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_6: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_7: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_7: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_8: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_8: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
BLOCK type=kotlin.Int origin=PREFIX_INCR
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_9: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_9: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_9: foo.A declared in foo.main' type=foo.A origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:foo.A [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=foo.A origin=null
<T>: foo.A
t: GET_VAR 'val a: foo.A declared in foo.main' type=foo.A origin=null
BLOCK type=kotlin.Int origin=PREFIX_DECR
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.A' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_10: foo.A declared in foo.main' type=foo.A origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_10: foo.A declared in foo.main' type=foo.A origin=null
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.A' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_10: foo.A declared in foo.main' type=foo.A origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:foo.B [val]
GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_11: foo.B declared in foo.main' type=foo.B origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_11: foo.B declared in foo.main' type=foo.B origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_12: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_12: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:foo.B [val]
GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:kotlin.Int [val]
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_13: foo.B declared in foo.main' type=foo.B origin=null
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_13: foo.B declared in foo.main' type=foo.B origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_14: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_14: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:foo.B [val]
GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
BLOCK type=kotlin.Int origin=PREFIX_INCR
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_15: foo.B declared in foo.main' type=foo.B origin=null
<set-?>: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_15: foo.B declared in foo.main' type=foo.B origin=null
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_15: foo.B declared in foo.main' type=foo.B origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_16 type:foo.B [val]
GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=foo.B
BLOCK type=kotlin.Int origin=PREFIX_DECR
CALL 'public final fun <set-prop> (<set-?>: kotlin.Int): kotlin.Unit declared in foo.B' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_16: foo.B declared in foo.main' type=foo.B origin=null
<set-?>: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_16: foo.B declared in foo.main' type=foo.B origin=null
CALL 'public final fun <get-prop> (): kotlin.Int declared in foo.B' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_16: foo.B declared in foo.main' type=foo.B origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=EQ
$this: CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
index: CONST Int type=kotlin.Int value=0
value: CONST Int type=kotlin.Int value=10
BLOCK type=kotlin.Unit origin=PLUSEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_17 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_18 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=PLUSEQ
$this: GET_VAR 'val tmp_17: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_18: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PLUSEQ
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PLUSEQ
$this: GET_VAR 'val tmp_17: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_18: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=MINUSEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_19 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_20 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=MINUSEQ
$this: GET_VAR 'val tmp_19: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_20: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun minus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=MINUSEQ
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=MINUSEQ
$this: GET_VAR 'val tmp_19: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_20: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=20
BLOCK type=kotlin.Unit origin=MULTEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_21 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_22 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=MULTEQ
$this: GET_VAR 'val tmp_21: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_22: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=MULTEQ
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=MULTEQ
$this: GET_VAR 'val tmp_21: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_22: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=2
BLOCK type=kotlin.Unit origin=DIVEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_23 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_24 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=DIVEQ
$this: GET_VAR 'val tmp_23: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_24: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun div (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=DIVEQ
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=DIVEQ
$this: GET_VAR 'val tmp_23: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_24: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=5
BLOCK type=kotlin.Unit origin=PERCEQ
VAR IR_TEMPORARY_VARIABLE name:tmp_25 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_26 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=PERCEQ
$this: GET_VAR 'val tmp_25: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_26: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun rem (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PERCEQ
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PERCEQ
$this: GET_VAR 'val tmp_25: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_26: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value=3
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_27 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
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 (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_27: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_28: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_27: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_28: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_29: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_29: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_30 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_31 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_32 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_30: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_31: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_30: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_31: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_32: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_32: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_33 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_34 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_33: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_34: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_33: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_34: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_33: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_34: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_35 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun id <T> (t: T of foo.id): T of foo.id declared in foo' type=kotlin.Array<kotlin.Int> origin=null
<T>: kotlin.Array<kotlin.Int>
t: CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_36 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_35: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_36: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_35: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_36: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_35: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_36: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_37 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_38 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
VAR IR_TEMPORARY_VARIABLE name:tmp_39 type:kotlin.Int [val]
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_37: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_38: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_37: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_38: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp_39: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_39: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=POSTFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_40 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
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 (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_40: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_41: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_40: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_41: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_DECR
$this: GET_VAR 'val tmp_42: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
GET_VAR 'val tmp_42: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp_43 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_44 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=PREFIX_INCR
$this: GET_VAR 'val tmp_43: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_44: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_INCR
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_43: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_44: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_INCR
$this: GET_VAR 'val tmp_43: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_44: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
BLOCK type=kotlin.Int origin=PREFIX_DECR
VAR IR_TEMPORARY_VARIABLE name:tmp_45 type:kotlin.Array<kotlin.Int> [val]
CALL 'public final fun <get-array> (): kotlin.Array<kotlin.Int> declared in foo' type=kotlin.Array<kotlin.Int> origin=GET_PROPERTY
VAR IR_TEMPORARY_VARIABLE name:tmp_46 type:kotlin.Int [val]
CONST Int type=kotlin.Int value=0
CALL 'public final fun set (index: kotlin.Int, value: T of kotlin.Array): kotlin.Unit declared in kotlin.Array' type=kotlin.Unit origin=PREFIX_DECR
$this: GET_VAR 'val tmp_45: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_46: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
value: CALL 'public final fun dec (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PREFIX_DECR
$this: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_45: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_46: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.Int origin=PREFIX_DECR
$this: GET_VAR 'val tmp_45: kotlin.Array<kotlin.Int> declared in foo.main' type=kotlin.Array<kotlin.Int> origin=null
index: GET_VAR 'val tmp_46: kotlin.Int declared in foo.main' type=kotlin.Int origin=null
@@ -0,0 +1,54 @@
// MUTE_SIGNATURE_COMPARISON_K2: JVM_IR
package foo
class A {
var prop: Int = 0
}
object B {
var prop: Int = 0
}
val array: Array<Int> = arrayOf(0)
fun <T> id(t: T): T {
return t
}
fun main() {
val a = A()
id(a).prop = 10
id(a).prop += 20
id(a).prop -= 20
id(a).prop *= 2
id(a).prop /= 5
id(a).prop %= 3
id(a).prop++
id(a).prop--
++id(a).prop
--id(a).prop
B.prop++
B.prop--
++B.prop
--B.prop
id(array)[0] = 10
id(array)[0] += 20
id(array)[0] -= 20
id(array)[0] *= 2
id(array)[0] /= 5
id(array)[0] %= 3
id(array)[0]++
id(array)[0]--
++id(array)[0]
--id(array)[0]
array[0]++
array[0]--
++array[0]
--array[0]
}
@@ -0,0 +1,200 @@
package foo
class A {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var prop: Int
field = 0
get
set
}
object B {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
var prop: Int
field = 0
get
set
}
val array: Array<Int>
field = arrayOf<Int>(elements = [0])
get
fun <T : Any?> id(t: T): T {
return t
}
fun main() {
val a: A = A()
id<A>(t = a).<set-prop>(<set-?> = 10)
{ // BLOCK
val tmp0_this: A = id<A>(t = a)
tmp0_this.<set-prop>(<set-?> = tmp0_this.<get-prop>().plus(other = 20))
}
{ // BLOCK
val tmp1_this: A = id<A>(t = a)
tmp1_this.<set-prop>(<set-?> = tmp1_this.<get-prop>().minus(other = 20))
}
{ // BLOCK
val tmp2_this: A = id<A>(t = a)
tmp2_this.<set-prop>(<set-?> = tmp2_this.<get-prop>().times(other = 2))
}
{ // BLOCK
val tmp3_this: A = id<A>(t = a)
tmp3_this.<set-prop>(<set-?> = tmp3_this.<get-prop>().div(other = 5))
}
{ // BLOCK
val tmp4_this: A = id<A>(t = a)
tmp4_this.<set-prop>(<set-?> = tmp4_this.<get-prop>().rem(other = 3))
}
{ // BLOCK
val tmp5_this: A = id<A>(t = a)
{ // BLOCK
val tmp6: Int = tmp5_this.<get-prop>()
tmp5_this.<set-prop>(<set-?> = tmp6.inc())
tmp6
}
} /*~> Unit */
{ // BLOCK
val tmp7_this: A = id<A>(t = a)
{ // BLOCK
val tmp8: Int = tmp7_this.<get-prop>()
tmp7_this.<set-prop>(<set-?> = tmp8.dec())
tmp8
}
} /*~> Unit */
{ // BLOCK
val tmp9_this: A = id<A>(t = a)
{ // BLOCK
tmp9_this.<set-prop>(<set-?> = tmp9_this.<get-prop>().inc())
tmp9_this.<get-prop>()
}
} /*~> Unit */
{ // BLOCK
val tmp10_this: A = id<A>(t = a)
{ // BLOCK
tmp10_this.<set-prop>(<set-?> = tmp10_this.<get-prop>().dec())
tmp10_this.<get-prop>()
}
} /*~> Unit */
{ // BLOCK
val tmp11_this: B = B
{ // BLOCK
val tmp12: Int = tmp11_this.<get-prop>()
tmp11_this.<set-prop>(<set-?> = tmp12.inc())
tmp12
}
} /*~> Unit */
{ // BLOCK
val tmp13_this: B = B
{ // BLOCK
val tmp14: Int = tmp13_this.<get-prop>()
tmp13_this.<set-prop>(<set-?> = tmp14.dec())
tmp14
}
} /*~> Unit */
{ // BLOCK
val tmp15_this: B = B
{ // BLOCK
tmp15_this.<set-prop>(<set-?> = tmp15_this.<get-prop>().inc())
tmp15_this.<get-prop>()
}
} /*~> Unit */
{ // BLOCK
val tmp16_this: B = B
{ // BLOCK
tmp16_this.<set-prop>(<set-?> = tmp16_this.<get-prop>().dec())
tmp16_this.<get-prop>()
}
} /*~> Unit */
id<Array<Int>>(t = <get-array>()).set(index = 0, value = 10)
{ // BLOCK
val tmp17_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp18_index0: Int = 0
tmp17_array.set(index = tmp18_index0, value = tmp17_array.get(index = tmp18_index0).plus(other = 20))
}
{ // BLOCK
val tmp19_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp20_index0: Int = 0
tmp19_array.set(index = tmp20_index0, value = tmp19_array.get(index = tmp20_index0).minus(other = 20))
}
{ // BLOCK
val tmp21_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp22_index0: Int = 0
tmp21_array.set(index = tmp22_index0, value = tmp21_array.get(index = tmp22_index0).times(other = 2))
}
{ // BLOCK
val tmp23_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp24_index0: Int = 0
tmp23_array.set(index = tmp24_index0, value = tmp23_array.get(index = tmp24_index0).div(other = 5))
}
{ // BLOCK
val tmp25_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp26_index0: Int = 0
tmp25_array.set(index = tmp26_index0, value = tmp25_array.get(index = tmp26_index0).rem(other = 3))
}
{ // BLOCK
val tmp27_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp28_index0: Int = 0
val tmp29: Int = tmp27_array.get(index = tmp28_index0)
tmp27_array.set(index = tmp28_index0, value = tmp29.inc())
tmp29
} /*~> Unit */
{ // BLOCK
val tmp30_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp31_index0: Int = 0
val tmp32: Int = tmp30_array.get(index = tmp31_index0)
tmp30_array.set(index = tmp31_index0, value = tmp32.dec())
tmp32
} /*~> Unit */
{ // BLOCK
val tmp33_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp34_index0: Int = 0
tmp33_array.set(index = tmp34_index0, value = tmp33_array.get(index = tmp34_index0).inc())
tmp33_array.get(index = tmp34_index0)
} /*~> Unit */
{ // BLOCK
val tmp35_array: Array<Int> = id<Array<Int>>(t = <get-array>())
val tmp36_index0: Int = 0
tmp35_array.set(index = tmp36_index0, value = tmp35_array.get(index = tmp36_index0).dec())
tmp35_array.get(index = tmp36_index0)
} /*~> Unit */
{ // BLOCK
val tmp37_array: Array<Int> = <get-array>()
val tmp38_index0: Int = 0
val tmp39: Int = tmp37_array.get(index = tmp38_index0)
tmp37_array.set(index = tmp38_index0, value = tmp39.inc())
tmp39
} /*~> Unit */
{ // BLOCK
val tmp40_array: Array<Int> = <get-array>()
val tmp41_index0: Int = 0
val tmp42: Int = tmp40_array.get(index = tmp41_index0)
tmp40_array.set(index = tmp41_index0, value = tmp42.dec())
tmp42
} /*~> Unit */
{ // BLOCK
val tmp43_array: Array<Int> = <get-array>()
val tmp44_index0: Int = 0
tmp43_array.set(index = tmp44_index0, value = tmp43_array.get(index = tmp44_index0).inc())
tmp43_array.get(index = tmp44_index0)
} /*~> Unit */
{ // BLOCK
val tmp45_array: Array<Int> = <get-array>()
val tmp46_index0: Int = 0
tmp45_array.set(index = tmp46_index0, value = tmp45_array.get(index = tmp46_index0).dec())
tmp45_array.get(index = tmp46_index0)
} /*~> Unit */
}
@@ -0,0 +1,84 @@
package foo
// CHECK:
// Mangled name: foo{}array
// Public signature: foo/array|6187513897999240281[0]
val array: Array<Int>
// CHECK JVM_IR:
// Mangled name: foo#<get-array>(){}kotlin.Array<kotlin.Int>
// Public signature: foo/array.<get-array>|7467926770652597701[0]
// CHECK JS_IR NATIVE:
// Mangled name: foo#<get-array>(){}
// Public signature: foo/array.<get-array>|-7741494344808015919[0]
get
// CHECK:
// Mangled name: foo.A
// Public signature: foo/A|null[0]
class A {
// CHECK:
// Mangled name: foo.A{}prop
// Public signature: foo/A.prop|3598315380056892812[0]
var prop: Int
// CHECK JVM_IR:
// Mangled name: foo.A#<get-prop>(){}kotlin.Int
// Public signature: foo/A.prop.<get-prop>|-2094203252476742575[0]
// CHECK JS_IR NATIVE:
// Mangled name: foo.A#<get-prop>(){}
// Public signature: foo/A.prop.<get-prop>|-5734736374948136327[0]
get
// CHECK:
// Mangled name: foo.A#<set-prop>(kotlin.Int){}
// Public signature: foo/A.prop.<set-prop>|3724820243841906450[0]
set
// CHECK:
// Mangled name: foo.A#<init>(){}
// Public signature: foo/A.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: foo.B
// Public signature: foo/B|null[0]
object B {
// CHECK:
// Mangled name: foo.B{}prop
// Public signature: foo/B.prop|3598315380056892812[0]
var prop: Int
// CHECK JVM_IR:
// Mangled name: foo.B#<get-prop>(){}kotlin.Int
// Public signature: foo/B.prop.<get-prop>|-2094203252476742575[0]
// CHECK JS_IR NATIVE:
// Mangled name: foo.B#<get-prop>(){}
// Public signature: foo/B.prop.<get-prop>|-5734736374948136327[0]
get
// CHECK:
// Mangled name: foo.B#<set-prop>(kotlin.Int){}
// Public signature: foo/B.prop.<set-prop>|3724820243841906450[0]
set
// CHECK:
// Mangled name: foo.B#<init>(){}
// Public signature: foo/B.<init>|-5645683436151566731[0]
private constructor() /* primary */
}
// CHECK JVM_IR:
// Mangled name: foo#id(0:0){0§<kotlin.Any?>}0:0
// Public signature: foo/id|-6791396263062521506[0]
// CHECK JS_IR NATIVE:
// Mangled name: foo#id(0:0){0§<kotlin.Any?>}
// Public signature: foo/id|9187295668833355463[0]
fun <T : Any?> id(t: T): T
// CHECK JVM_IR:
// Mangled name computed from Ir: foo#main(){}
// Mangled name computed from Descriptor: foo#main(){}%AssignmentOperator.kt
// Public signature: foo/main|7392120756922895329[0]
// CHECK JS_IR NATIVE:
// Mangled name: foo#main(){}
// Public signature: foo/main|-4284757841571462650[0]
fun main(): Unit