e8a640851a
Generate the expression with the original type and then insert an implicit conversion. That matches the behavior of psi2ir better and therefore avoids breaking backend assumptions. In particular, IrGetValue expects the type of the underlying symbol and the type of the IrGetValue to be the same.
123 lines
9.6 KiB
Plaintext
Vendored
123 lines
9.6 KiB
Plaintext
Vendored
FILE fqName:<root> fileName:/samConversionsWithSmartCasts.kt
|
|
CLASS INTERFACE name:KRunnable modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
|
|
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.KRunnable
|
|
FUN name:run visibility:public modality:ABSTRACT <> ($this:<root>.KRunnable) returnType:kotlin.Unit
|
|
$this: VALUE_PARAMETER name:<this> type:<root>.KRunnable
|
|
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
|
overridden:
|
|
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
|
|
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
|
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
|
overridden:
|
|
public open fun hashCode (): kotlin.Int declared in kotlin.Any
|
|
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
|
overridden:
|
|
public open fun toString (): kotlin.String declared in kotlin.Any
|
|
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
FUN name:id visibility:public modality:FINAL <T> (x:T of <root>.id) returnType:T of <root>.id
|
|
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
|
|
VALUE_PARAMETER name:x index:0 type:T of <root>.id
|
|
BLOCK_BODY
|
|
RETURN type=kotlin.Nothing from='public final fun id <T> (x: T of <root>.id): T of <root>.id declared in <root>'
|
|
GET_VAR 'x: T of <root>.id declared in <root>.id' type=T of <root>.id origin=null
|
|
FUN name:run1 visibility:public modality:FINAL <> (r:<root>.KRunnable) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:r index:0 type:<root>.KRunnable
|
|
BLOCK_BODY
|
|
FUN name:run2 visibility:public modality:FINAL <> (r1:<root>.KRunnable, r2:<root>.KRunnable) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:r1 index:0 type:<root>.KRunnable
|
|
VALUE_PARAMETER name:r2 index:1 type:<root>.KRunnable
|
|
BLOCK_BODY
|
|
FUN name:test0 visibility:public modality:FINAL <T> (a:T of <root>.test0) returnType:kotlin.Unit
|
|
TYPE_PARAMETER name:T index:0 variance: superTypes:[<root>.KRunnable; kotlin.Function0<kotlin.Unit>]
|
|
VALUE_PARAMETER name:a index:0 type:T of <root>.test0
|
|
BLOCK_BODY
|
|
CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: GET_VAR 'a: T of <root>.test0 declared in <root>.test0' type=T of <root>.test0 origin=null
|
|
FUN name:test1 visibility:public modality:FINAL <> (a:kotlin.Function0<kotlin.Unit>) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:kotlin.Function0<kotlin.Unit>
|
|
BLOCK_BODY
|
|
WHEN type=kotlin.Unit origin=IF
|
|
BRANCH
|
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test1' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
then: CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: TYPE_OP type=<root>.KRunnable origin=IMPLICIT_CAST typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test1' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
FUN name:test2 visibility:public modality:FINAL <> (a:<root>.KRunnable) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:<root>.KRunnable
|
|
BLOCK_BODY
|
|
TYPE_OP type=kotlin.Function0<kotlin.Unit> origin=CAST typeOperand=kotlin.Function0<kotlin.Unit>
|
|
GET_VAR 'a: <root>.KRunnable declared in <root>.test2' type=<root>.KRunnable origin=null
|
|
CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: TYPE_OP type=kotlin.Function0<kotlin.Unit> origin=IMPLICIT_CAST typeOperand=kotlin.Function0<kotlin.Unit>
|
|
GET_VAR 'a: <root>.KRunnable declared in <root>.test2' type=<root>.KRunnable origin=null
|
|
FUN name:test3 visibility:public modality:FINAL <> (a:kotlin.Function0<kotlin.Unit>) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:kotlin.Function0<kotlin.Unit>
|
|
BLOCK_BODY
|
|
WHEN type=kotlin.Unit origin=IF
|
|
BRANCH
|
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test3' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
then: CALL 'public final fun run2 (r1: <root>.KRunnable, r2: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r1: TYPE_OP type=<root>.KRunnable origin=IMPLICIT_CAST typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test3' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
r2: TYPE_OP type=<root>.KRunnable origin=IMPLICIT_CAST typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test3' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
FUN name:test4 visibility:public modality:FINAL <> (a:kotlin.Function0<kotlin.Unit>, b:kotlin.Function0<kotlin.Unit>) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:kotlin.Function0<kotlin.Unit>
|
|
VALUE_PARAMETER name:b index:1 type:kotlin.Function0<kotlin.Unit>
|
|
BLOCK_BODY
|
|
WHEN type=kotlin.Unit origin=IF
|
|
BRANCH
|
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test4' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
then: CALL 'public final fun run2 (r1: <root>.KRunnable, r2: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r1: TYPE_OP type=<root>.KRunnable origin=IMPLICIT_CAST typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test4' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
r2: GET_VAR 'b: kotlin.Function0<kotlin.Unit> declared in <root>.test4' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
FUN name:test5 visibility:public modality:FINAL <> (a:kotlin.Any) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:kotlin.Any
|
|
BLOCK_BODY
|
|
WHEN type=kotlin.Unit origin=IF
|
|
BRANCH
|
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Any declared in <root>.test5' type=kotlin.Any origin=null
|
|
then: CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: TYPE_OP type=<root>.KRunnable origin=IMPLICIT_CAST typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Any declared in <root>.test5' type=kotlin.Any origin=null
|
|
FUN name:test5x visibility:public modality:FINAL <> (a:kotlin.Any) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:kotlin.Any
|
|
BLOCK_BODY
|
|
WHEN type=kotlin.Unit origin=IF
|
|
BRANCH
|
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Any declared in <root>.test5x' type=kotlin.Any origin=null
|
|
then: BLOCK type=kotlin.Unit origin=null
|
|
TYPE_OP type=kotlin.Function0<kotlin.Unit> origin=CAST typeOperand=kotlin.Function0<kotlin.Unit>
|
|
TYPE_OP type=<root>.KRunnable origin=IMPLICIT_CAST typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Any declared in <root>.test5x' type=kotlin.Any origin=null
|
|
CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: TYPE_OP type=<root>.KRunnable origin=IMPLICIT_CAST typeOperand=<root>.KRunnable
|
|
GET_VAR 'a: kotlin.Any declared in <root>.test5x' type=kotlin.Any origin=null
|
|
FUN name:test6 visibility:public modality:FINAL <> (a:kotlin.Any) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:kotlin.Any
|
|
BLOCK_BODY
|
|
TYPE_OP type=kotlin.Function0<kotlin.Unit> origin=CAST typeOperand=kotlin.Function0<kotlin.Unit>
|
|
GET_VAR 'a: kotlin.Any declared in <root>.test6' type=kotlin.Any origin=null
|
|
CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: TYPE_OP type=kotlin.Function0<kotlin.Unit> origin=IMPLICIT_CAST typeOperand=kotlin.Function0<kotlin.Unit>
|
|
GET_VAR 'a: kotlin.Any declared in <root>.test6' type=kotlin.Any origin=null
|
|
FUN name:test8 visibility:public modality:FINAL <> (a:kotlin.Function0<kotlin.Unit>) returnType:kotlin.Unit
|
|
VALUE_PARAMETER name:a index:0 type:kotlin.Function0<kotlin.Unit>
|
|
BLOCK_BODY
|
|
CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: CALL 'public final fun id <T> (x: T of <root>.id): T of <root>.id declared in <root>' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
<T>: kotlin.Function0<kotlin.Unit>
|
|
x: GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test8' type=kotlin.Function0<kotlin.Unit> origin=null
|
|
FUN name:test9 visibility:public modality:FINAL <> () returnType:kotlin.Unit
|
|
BLOCK_BODY
|
|
CALL 'public final fun run1 (r: <root>.KRunnable): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
|
r: FUNCTION_REFERENCE 'public final fun test9 (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null reflectionTarget=<same>
|