Files
kotlin-fork/compiler/testData/ir/irText/fakeOverrides/operators/basicOverrideOnComplexHierarchy.fir.ir.txt
Kirill Rakhman 69a7bf7f68 [FIR] Add equality constraint from expected type for some synthetic function calls
This fixes some cases where we infer some type variable inside one
of the branches to Nothing instead of the expected type because Nothing
appeared in some other branch.

Specifically, we add an equality instead of a subtype constraint during
completion of calls to synthetic functions for if/when, try and !!.
We don't do it when the call contains a (possibly nested) elvis or is
inside the RHS of an assignment.
Otherwise, we would prevent some smart-casts.

#KT-65882 Fixed
2024-03-05 17:38:59 +00:00

310 lines
22 KiB
Plaintext
Vendored

FILE fqName:<root> fileName:/1.kt
CLASS CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.A
CONSTRUCTOR visibility:public <> () returnType:<root>.A [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Any]'
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
FUN name:get visibility:public modality:OPEN <> ($this:<root>.A, i:kotlin.Int?) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.A
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.A'
CONST Int type=kotlin.Int value=2
FUN name:invoke visibility:public modality:OPEN <> ($this:<root>.A) returnType:kotlin.Unit [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.A
BLOCK_BODY
FUN name:plus visibility:public modality:OPEN <> ($this:<root>.A, i:kotlin.Int?) returnType:<root>.A [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.A
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.A'
CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.A' type=<root>.A origin=null
CLASS CLASS name:B modality:FINAL visibility:public superTypes:[<root>.Java1]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.B
CONSTRUCTOR visibility:public <> () returnType:<root>.B [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.Java1'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:B modality:FINAL visibility:public superTypes:[<root>.Java1]'
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 <root>.Java1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:get visibility:public modality:OPEN <> ($this:<root>.A, i:kotlin.Int?) returnType:kotlin.Int [fake_override,operator]
overridden:
public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.Java1
$this: VALUE_PARAMETER name:<this> type:<root>.A
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
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 <root>.Java1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:invoke visibility:public modality:OPEN <> ($this:<root>.A) returnType:kotlin.Unit [fake_override,operator]
overridden:
public open fun invoke (): kotlin.Unit declared in <root>.Java1
$this: VALUE_PARAMETER name:<this> type:<root>.A
FUN FAKE_OVERRIDE name:plus visibility:public modality:OPEN <> ($this:<root>.A, i:kotlin.Int?) returnType:<root>.A [fake_override,operator]
overridden:
public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.Java1
$this: VALUE_PARAMETER name:<this> type:<root>.A
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
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 <root>.Java1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.Java2]
$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> () declared in <root>.Java2'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.Java2]'
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 <root>.Java2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:get visibility:public modality:OPEN <> ($this:<root>.A, i:kotlin.Int?) returnType:kotlin.Int [fake_override,operator]
overridden:
public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.Java2
$this: VALUE_PARAMETER name:<this> type:<root>.A
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
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 <root>.Java2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:invoke visibility:public modality:OPEN <> ($this:<root>.Java2) returnType:kotlin.Unit [fake_override,operator]
overridden:
public open fun invoke (): kotlin.Unit declared in <root>.Java2
$this: VALUE_PARAMETER name:<this> type:<root>.Java2
FUN FAKE_OVERRIDE name:plus visibility:public modality:OPEN <> ($this:<root>.A, i:kotlin.Int?) returnType:<root>.A [fake_override,operator]
overridden:
public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.Java2
$this: VALUE_PARAMETER name:<this> type:<root>.A
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
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 <root>.Java2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:D modality:FINAL visibility:public superTypes:[<root>.Java1]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.D
CONSTRUCTOR visibility:public <> () returnType:<root>.D [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.Java1'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:D modality:FINAL visibility:public superTypes:[<root>.Java1]'
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 <root>.Java1
$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 <root>.Java1
$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 <root>.Java1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:get visibility:public modality:OPEN <> ($this:<root>.D, i:kotlin.Int?) returnType:kotlin.Int [operator]
overridden:
public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.Java1
$this: VALUE_PARAMETER name:<this> type:<root>.D
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.D'
CONST Int type=kotlin.Int value=3
FUN name:invoke visibility:public modality:OPEN <> ($this:<root>.D) returnType:kotlin.Unit [operator]
overridden:
public open fun invoke (): kotlin.Unit declared in <root>.Java1
$this: VALUE_PARAMETER name:<this> type:<root>.D
BLOCK_BODY
FUN name:plus visibility:public modality:OPEN <> ($this:<root>.D, i:kotlin.Int?) returnType:<root>.A [operator]
overridden:
public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.Java1
$this: VALUE_PARAMETER name:<this> type:<root>.D
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.D'
CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.A' type=<root>.A origin=null
CLASS CLASS name:E modality:ABSTRACT visibility:public superTypes:[<root>.Java4]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.E
CONSTRUCTOR visibility:public <> () returnType:<root>.E [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:E modality:ABSTRACT visibility:public superTypes:[<root>.Java4]'
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 <root>.Java4
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:get visibility:public modality:ABSTRACT <> ($this:<root>.Java3, i:@[FlexibleNullability] kotlin.Int?) returnType:@[FlexibleNullability] kotlin.Int? [fake_override,operator]
overridden:
public abstract fun get (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] kotlin.Int? declared in <root>.Java4
$this: VALUE_PARAMETER name:<this> type:<root>.Java3
VALUE_PARAMETER name:i index:0 type:@[FlexibleNullability] kotlin.Int?
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 <root>.Java4
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:invoke visibility:public modality:ABSTRACT <> ($this:<root>.Java3) returnType:kotlin.Unit [fake_override,operator]
overridden:
public abstract fun invoke (): kotlin.Unit declared in <root>.Java4
$this: VALUE_PARAMETER name:<this> type:<root>.Java3
FUN FAKE_OVERRIDE name:plus visibility:public modality:ABSTRACT <> ($this:<root>.Java3, i:@[FlexibleNullability] kotlin.Int?) returnType:@[FlexibleNullability] <root>.Java3? [fake_override,operator]
overridden:
public abstract fun plus (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] <root>.Java3? declared in <root>.Java4
$this: VALUE_PARAMETER name:<this> type:<root>.Java3
VALUE_PARAMETER name:i index:0 type:@[FlexibleNullability] kotlin.Int?
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 <root>.Java4
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:F modality:FINAL visibility:public superTypes:[<root>.Java4]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.F
CONSTRUCTOR visibility:public <> () returnType:<root>.F [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:F modality:FINAL visibility:public superTypes:[<root>.Java4]'
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 <root>.Java4
$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 <root>.Java4
$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 <root>.Java4
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:get visibility:public modality:OPEN <> ($this:<root>.F, i:kotlin.Int?) returnType:kotlin.Int [operator]
overridden:
public abstract fun get (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] kotlin.Int? declared in <root>.Java4
$this: VALUE_PARAMETER name:<this> type:<root>.F
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.F'
CONST Int type=kotlin.Int value=4
FUN name:invoke visibility:public modality:OPEN <> ($this:<root>.F) returnType:kotlin.Unit [operator]
overridden:
public abstract fun invoke (): kotlin.Unit declared in <root>.Java4
$this: VALUE_PARAMETER name:<this> type:<root>.F
BLOCK_BODY
FUN name:plus visibility:public modality:OPEN <> ($this:<root>.F, i:kotlin.Int?) returnType:<root>.Java3 [operator]
overridden:
public abstract fun plus (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] <root>.Java3? declared in <root>.Java4
$this: VALUE_PARAMETER name:<this> type:<root>.F
VALUE_PARAMETER name:i index:0 type:kotlin.Int?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun plus (i: kotlin.Int?): <root>.Java3 declared in <root>.F'
CALL 'public final fun CHECK_NOT_NULL <T0> (arg0: T0 of kotlin.internal.ir.CHECK_NOT_NULL?): {T0 of kotlin.internal.ir.CHECK_NOT_NULL & Any} declared in kotlin.internal.ir' type=<root>.Java3 origin=EXCLEXCL
<T0>: kotlin.Nothing
arg0: CONST Null type=kotlin.Nothing? value=null
CLASS INTERFACE name:KotlinInterface modality:ABSTRACT visibility:public superTypes:[<root>.Java3]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.KotlinInterface
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 <root>.Java3
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:get visibility:public modality:ABSTRACT <> ($this:<root>.Java3, i:@[FlexibleNullability] kotlin.Int?) returnType:@[FlexibleNullability] kotlin.Int? [fake_override,operator]
overridden:
public abstract fun get (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] kotlin.Int? declared in <root>.Java3
$this: VALUE_PARAMETER name:<this> type:<root>.Java3
VALUE_PARAMETER name:i index:0 type:@[FlexibleNullability] kotlin.Int?
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 <root>.Java3
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:invoke visibility:public modality:ABSTRACT <> ($this:<root>.Java3) returnType:kotlin.Unit [fake_override,operator]
overridden:
public abstract fun invoke (): kotlin.Unit declared in <root>.Java3
$this: VALUE_PARAMETER name:<this> type:<root>.Java3
FUN FAKE_OVERRIDE name:plus visibility:public modality:ABSTRACT <> ($this:<root>.Java3, i:@[FlexibleNullability] kotlin.Int?) returnType:@[FlexibleNullability] <root>.Java3? [fake_override,operator]
overridden:
public abstract fun plus (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] <root>.Java3? declared in <root>.Java3
$this: VALUE_PARAMETER name:<this> type:<root>.Java3
VALUE_PARAMETER name:i index:0 type:@[FlexibleNullability] kotlin.Int?
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 <root>.Java3
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:test visibility:public modality:FINAL <> (b:<root>.B, c:<root>.C, d:<root>.D, e:<root>.E, f:<root>.F) returnType:kotlin.Unit
VALUE_PARAMETER name:b index:0 type:<root>.B
VALUE_PARAMETER name:c index:1 type:<root>.C
VALUE_PARAMETER name:d index:2 type:<root>.D
VALUE_PARAMETER name:e index:3 type:<root>.E
VALUE_PARAMETER name:f index:4 type:<root>.F
BLOCK_BODY
VAR name:k type:kotlin.Unit [val]
CALL 'public open fun invoke (): kotlin.Unit declared in <root>.B' type=kotlin.Unit origin=null
$this: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=VARIABLE_AS_FUNCTION
VAR name:k1 type:<root>.A [val]
CALL 'public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.B' type=<root>.A origin=PLUS
$this: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k2 type:kotlin.Int [val]
CALL 'public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.B' type=kotlin.Int origin=GET_ARRAY_ELEMENT
$this: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k3 type:kotlin.Unit [val]
CALL 'public open fun invoke (): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=null
$this: GET_VAR 'c: <root>.C declared in <root>.test' type=<root>.C origin=VARIABLE_AS_FUNCTION
VAR name:k4 type:<root>.A [val]
CALL 'public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.C' type=<root>.A origin=PLUS
$this: GET_VAR 'c: <root>.C declared in <root>.test' type=<root>.C origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k5 type:kotlin.Int [val]
CALL 'public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.C' type=kotlin.Int origin=GET_ARRAY_ELEMENT
$this: GET_VAR 'c: <root>.C declared in <root>.test' type=<root>.C origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k6 type:kotlin.Unit [val]
CALL 'public open fun invoke (): kotlin.Unit declared in <root>.D' type=kotlin.Unit origin=null
$this: GET_VAR 'd: <root>.D declared in <root>.test' type=<root>.D origin=VARIABLE_AS_FUNCTION
VAR name:k7 type:<root>.A [val]
CALL 'public open fun plus (i: kotlin.Int?): <root>.A declared in <root>.D' type=<root>.A origin=PLUS
$this: GET_VAR 'd: <root>.D declared in <root>.test' type=<root>.D origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k8 type:kotlin.Int [val]
CALL 'public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.D' type=kotlin.Int origin=GET_ARRAY_ELEMENT
$this: GET_VAR 'd: <root>.D declared in <root>.test' type=<root>.D origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k9 type:kotlin.Unit [val]
CALL 'public abstract fun invoke (): kotlin.Unit declared in <root>.E' type=kotlin.Unit origin=null
$this: GET_VAR 'e: <root>.E declared in <root>.test' type=<root>.E origin=VARIABLE_AS_FUNCTION
VAR name:k10 type:<root>.Java3 [val]
TYPE_OP type=<root>.Java3 origin=IMPLICIT_NOTNULL typeOperand=<root>.Java3
CALL 'public abstract fun plus (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] <root>.Java3? declared in <root>.E' type=@[FlexibleNullability] <root>.Java3? origin=PLUS
$this: GET_VAR 'e: <root>.E declared in <root>.test' type=<root>.E origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k11 type:kotlin.Int [val]
TYPE_OP type=kotlin.Int origin=IMPLICIT_NOTNULL typeOperand=kotlin.Int
CALL 'public abstract fun get (i: @[FlexibleNullability] kotlin.Int?): @[FlexibleNullability] kotlin.Int? declared in <root>.E' type=@[FlexibleNullability] kotlin.Int? origin=GET_ARRAY_ELEMENT
$this: GET_VAR 'e: <root>.E declared in <root>.test' type=<root>.E origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k12 type:kotlin.Unit [val]
CALL 'public open fun invoke (): kotlin.Unit declared in <root>.F' type=kotlin.Unit origin=null
$this: GET_VAR 'f: <root>.F declared in <root>.test' type=<root>.F origin=VARIABLE_AS_FUNCTION
VAR name:k13 type:<root>.Java3 [val]
CALL 'public open fun plus (i: kotlin.Int?): <root>.Java3 declared in <root>.F' type=<root>.Java3 origin=PLUS
$this: GET_VAR 'f: <root>.F declared in <root>.test' type=<root>.F origin=null
i: CONST Int type=kotlin.Int value=1
VAR name:k14 type:kotlin.Int [val]
CALL 'public open fun get (i: kotlin.Int?): kotlin.Int declared in <root>.F' type=kotlin.Int origin=GET_ARRAY_ELEMENT
$this: GET_VAR 'f: <root>.F declared in <root>.test' type=<root>.F origin=null
i: CONST Int type=kotlin.Int value=1