From 409e90e7de325bed93730cf02990b52587fb35ac Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 1 Jun 2020 16:02:41 +0300 Subject: [PATCH] FIR: Fix codegen test data after safe-call refactoring ^KT-38444 In Progress --- .../testData/codegen/box/classes/kt1247.kt | 1 - .../testData/codegen/box/classes/kt1918.kt | 1 - .../box/increment/postfixIncrementOnClass.kt | 2 - .../localDelegatedProperties.fir.txt | 3 +- .../caoWithAdaptationForSam.fir.txt | 6 +-- .../expressions/extFunSafeInvoke.fir.txt | 16 ++++---- .../irText/expressions/safeAssignment.fir.txt | 17 +++++++-- .../safeCallWithIncrementDecrement.fir.txt | 37 ++++++++++++------- .../ir/irText/expressions/safeCalls.fir.txt | 33 +++++++++++------ .../smartCastsWithDestructuring.fir.txt | 6 +-- 10 files changed, 74 insertions(+), 48 deletions(-) diff --git a/compiler/testData/codegen/box/classes/kt1247.kt b/compiler/testData/codegen/box/classes/kt1247.kt index 6a03b709f66..4ba62b57487 100644 --- a/compiler/testData/codegen/box/classes/kt1247.kt +++ b/compiler/testData/codegen/box/classes/kt1247.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR fun f(a : Int?, b : Int.(Int)->Int) = a?.b(1) fun box(): String { diff --git a/compiler/testData/codegen/box/classes/kt1918.kt b/compiler/testData/codegen/box/classes/kt1918.kt index dcd88b57c78..1da1471e2d3 100644 --- a/compiler/testData/codegen/box/classes/kt1918.kt +++ b/compiler/testData/codegen/box/classes/kt1918.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR class Bar { } diff --git a/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt b/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt index 93aa4956e66..deb8df65d80 100644 --- a/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt +++ b/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR - interface Base class Derived: Base class Another: Base diff --git a/compiler/testData/ir/irText/declarations/localDelegatedProperties.fir.txt b/compiler/testData/ir/irText/declarations/localDelegatedProperties.fir.txt index 96a640698ca..3a63739afda 100644 --- a/compiler/testData/ir/irText/declarations/localDelegatedProperties.fir.txt +++ b/compiler/testData/ir/irText/declarations/localDelegatedProperties.fir.txt @@ -15,8 +15,7 @@ FILE fqName: fileName:/localDelegatedProperties.kt SET_VAR 'var x: IrErrorType [var] declared in .test2' type=kotlin.Unit origin=EQ CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null $this: GET_VAR 'val tmp_0: kotlin.Int [val] declared in .test2' type=kotlin.Int origin=null - TYPE_OP type=IrErrorType origin=IMPLICIT_CAST typeOperand=IrErrorType - GET_VAR 'val tmp_0: kotlin.Int [val] declared in .test2' type=kotlin.Int origin=null + GET_VAR 'val tmp_0: kotlin.Int [val] declared in .test2' type=kotlin.Int origin=null SET_VAR 'var x: IrErrorType [var] declared in .test2' type=kotlin.Unit origin=EQ CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null $this: TYPE_OP type=kotlin.Int origin=IMPLICIT_CAST typeOperand=kotlin.Int diff --git a/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.txt b/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.txt index 0338d5f43dd..46f24184f1b 100644 --- a/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.txt +++ b/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.txt @@ -141,13 +141,11 @@ FILE fqName: fileName:/caoWithAdaptationForSam.kt GET_VAR 'fn: kotlin.Function1 declared in .test4' type=kotlin.Function1 origin=null CALL 'public final fun set (i: .IFoo, newValue: kotlin.Int): kotlin.Unit [operator] declared in ' type=kotlin.Unit origin=null $receiver: GET_VAR 'val tmp_2: .A [val] declared in .test4' type=.A origin=null - i: TYPE_OP type=kotlin.Function1 origin=IMPLICIT_CAST typeOperand=kotlin.Function1 - GET_VAR 'val tmp_3: .IFoo [val] declared in .test4' type=.IFoo origin=null + i: GET_VAR 'val tmp_3: .IFoo [val] declared in .test4' type=.IFoo origin=null newValue: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null $this: CALL 'public final fun get (i: .IFoo): kotlin.Int [operator] declared in ' type=kotlin.Int origin=null $receiver: GET_VAR 'val tmp_2: .A [val] declared in .test4' type=.A origin=null - i: TYPE_OP type=kotlin.Function1 origin=IMPLICIT_CAST typeOperand=kotlin.Function1 - GET_VAR 'val tmp_3: .IFoo [val] declared in .test4' type=.IFoo origin=null + i: GET_VAR 'val tmp_3: .IFoo [val] declared in .test4' type=.IFoo origin=null other: CONST Int type=kotlin.Int value=1 FUN name:test5 visibility:public modality:FINAL <> (a:kotlin.Any) returnType:kotlin.Unit VALUE_PARAMETER name:a index:0 type:kotlin.Any diff --git a/compiler/testData/ir/irText/expressions/extFunSafeInvoke.fir.txt b/compiler/testData/ir/irText/expressions/extFunSafeInvoke.fir.txt index a4cf40f3a73..086d3ff53a5 100644 --- a/compiler/testData/ir/irText/expressions/extFunSafeInvoke.fir.txt +++ b/compiler/testData/ir/irText/expressions/extFunSafeInvoke.fir.txt @@ -1,13 +1,13 @@ FILE fqName: fileName:/extFunSafeInvoke.kt - FUN name:test visibility:public modality:FINAL <> (receiver:kotlin.Any?, fn:kotlin.Function3) returnType:IrErrorType + FUN name:test visibility:public modality:FINAL <> (receiver:kotlin.Any?, fn:kotlin.Function3) returnType:kotlin.Unit? VALUE_PARAMETER name:receiver index:0 type:kotlin.Any? VALUE_PARAMETER name:fn index:1 type:kotlin.Function3 BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun test (receiver: kotlin.Any?, fn: kotlin.Function3): IrErrorType declared in ' - BLOCK type=IrErrorType origin=SAFE_CALL + RETURN type=kotlin.Nothing from='public final fun test (receiver: kotlin.Any?, fn: kotlin.Function3): kotlin.Unit? declared in ' + BLOCK type=kotlin.Unit? origin=SAFE_CALL VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.Any? [val] GET_VAR 'receiver: kotlin.Any? declared in .test' type=kotlin.Any? origin=null - WHEN type=IrErrorType origin=null + WHEN type=kotlin.Unit? origin=null BRANCH if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ arg0: GET_VAR 'val tmp_0: kotlin.Any? [val] declared in .test' type=kotlin.Any? origin=null @@ -15,6 +15,8 @@ FILE fqName: fileName:/extFunSafeInvoke.kt then: CONST Null type=kotlin.Nothing? value=null BRANCH if: CONST Boolean type=kotlin.Boolean value=true - then: ERROR_CALL 'Unresolved reference: #' type=IrErrorType - CONST Int type=kotlin.Int value=42 - CONST String type=kotlin.String value="Hello" + then: CALL 'public abstract fun invoke (p1: P1 of kotlin.Function3, p2: P2 of kotlin.Function3, p3: P3 of kotlin.Function3): R of kotlin.Function3 [operator] declared in kotlin.Function3' type=kotlin.Unit origin=INVOKE + $this: GET_VAR 'fn: kotlin.Function3 declared in .test' type=kotlin.Function3 origin=null + p1: GET_VAR 'val tmp_0: kotlin.Any? [val] declared in .test' type=kotlin.Any? origin=null + p2: CONST Int type=kotlin.Int value=42 + p3: CONST String type=kotlin.String value="Hello" diff --git a/compiler/testData/ir/irText/expressions/safeAssignment.fir.txt b/compiler/testData/ir/irText/expressions/safeAssignment.fir.txt index c9cc6b8989a..483a951297d 100644 --- a/compiler/testData/ir/irText/expressions/safeAssignment.fir.txt +++ b/compiler/testData/ir/irText/expressions/safeAssignment.fir.txt @@ -41,6 +41,17 @@ FILE fqName: fileName:/safeAssignment.kt FUN name:test visibility:public modality:FINAL <> (nc:.C?) returnType:kotlin.Unit VALUE_PARAMETER name:nc index:0 type:.C? BLOCK_BODY - CALL 'public final fun (: kotlin.Int): kotlin.Unit declared in .C' type=kotlin.Unit origin=EQ - $this: GET_VAR 'nc: .C? declared in .test' type=.C? origin=null - : CONST Int type=kotlin.Int value=42 + BLOCK type=kotlin.Unit? origin=SAFE_CALL + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:.C? [val] + GET_VAR 'nc: .C? declared in .test' type=.C? origin=null + WHEN type=kotlin.Unit? origin=null + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_0: .C? [val] declared in .test' type=.C? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public final fun (: kotlin.Int): kotlin.Unit declared in .C' type=kotlin.Unit origin=EQ + $this: GET_VAR 'val tmp_0: .C? [val] declared in .test' type=.C? origin=null + : CONST Int type=kotlin.Int value=42 diff --git a/compiler/testData/ir/irText/expressions/safeCallWithIncrementDecrement.fir.txt b/compiler/testData/ir/irText/expressions/safeCallWithIncrementDecrement.fir.txt index c7b61b2225c..e4638bc4f2f 100644 --- a/compiler/testData/ir/irText/expressions/safeCallWithIncrementDecrement.fir.txt +++ b/compiler/testData/ir/irText/expressions/safeCallWithIncrementDecrement.fir.txt @@ -75,45 +75,56 @@ FILE fqName:test fileName:/safeCallWithIncrementDecrement.kt if: CONST Boolean type=kotlin.Boolean value=true then: CALL 'public final fun (): kotlin.Int declared in test' type=kotlin.Int origin=GET_PROPERTY $receiver: GET_VAR 'val tmp_2: test.C? [val] declared in test.testProperty' type=test.C? origin=null - CALL 'public final fun (value: kotlin.Int): kotlin.Unit declared in test' type=kotlin.Unit origin=EQ - $receiver: GET_VAR 'nc: test.C? declared in test.testProperty' type=test.C? origin=null - value: CALL 'public final fun inc (): kotlin.Int? [operator] declared in test' type=kotlin.Int? origin=null - $receiver: GET_VAR 'val tmp_1: kotlin.Int? [val] declared in test.testProperty' type=kotlin.Int? origin=null + BLOCK type=kotlin.Unit? origin=SAFE_CALL + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:test.C? [val] + GET_VAR 'nc: test.C? declared in test.testProperty' type=test.C? origin=null + WHEN type=kotlin.Unit? origin=null + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_3: test.C? [val] declared in test.testProperty' type=test.C? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public final fun (value: kotlin.Int): kotlin.Unit declared in test' type=kotlin.Unit origin=EQ + $receiver: GET_VAR 'val tmp_3: test.C? [val] declared in test.testProperty' type=test.C? origin=null + value: CALL 'public final fun inc (): kotlin.Int? [operator] declared in test' type=kotlin.Int? origin=null + $receiver: GET_VAR 'val tmp_1: kotlin.Int? [val] declared in test.testProperty' type=kotlin.Int? origin=null GET_VAR 'val tmp_1: kotlin.Int? [val] declared in test.testProperty' type=kotlin.Int? origin=null FUN name:testArrayAccess visibility:public modality:FINAL <> (nc:test.C?) returnType:kotlin.Unit VALUE_PARAMETER name:nc index:0 type:test.C? BLOCK_BODY - VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.Int [val] + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlin.Int [val] CALL 'public final fun get (index: kotlin.Int): kotlin.Int [operator] declared in test' type=kotlin.Int origin=null $receiver: BLOCK type=kotlin.Int? origin=SAFE_CALL - VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:test.C? [val] + VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:test.C? [val] GET_VAR 'nc: test.C? declared in test.testArrayAccess' type=test.C? origin=null WHEN type=kotlin.Int? origin=null BRANCH if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ - arg0: GET_VAR 'val tmp_4: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null + arg0: GET_VAR 'val tmp_5: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null arg1: CONST Null type=kotlin.Nothing? value=null then: CONST Null type=kotlin.Nothing? value=null BRANCH if: CONST Boolean type=kotlin.Boolean value=true then: CALL 'public final fun (): kotlin.Int declared in test' type=kotlin.Int origin=GET_PROPERTY - $receiver: GET_VAR 'val tmp_4: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null + $receiver: GET_VAR 'val tmp_5: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null index: CONST Int type=kotlin.Int value=0 CALL 'public final fun set (index: kotlin.Int, value: kotlin.Int): kotlin.Unit [operator] declared in test' type=kotlin.Unit origin=null $receiver: BLOCK type=kotlin.Int? origin=SAFE_CALL - VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:test.C? [val] + VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:test.C? [val] GET_VAR 'nc: test.C? declared in test.testArrayAccess' type=test.C? origin=null WHEN type=kotlin.Int? origin=null BRANCH if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ - arg0: GET_VAR 'val tmp_5: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null + arg0: GET_VAR 'val tmp_6: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null arg1: CONST Null type=kotlin.Nothing? value=null then: CONST Null type=kotlin.Nothing? value=null BRANCH if: CONST Boolean type=kotlin.Boolean value=true then: CALL 'public final fun (): kotlin.Int declared in test' type=kotlin.Int origin=GET_PROPERTY - $receiver: GET_VAR 'val tmp_5: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null + $receiver: GET_VAR 'val tmp_6: test.C? [val] declared in test.testArrayAccess' type=test.C? origin=null index: CONST Int type=kotlin.Int value=0 value: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null - $this: GET_VAR 'val tmp_3: kotlin.Int [val] declared in test.testArrayAccess' type=kotlin.Int origin=null - GET_VAR 'val tmp_3: kotlin.Int [val] declared in test.testArrayAccess' type=kotlin.Int origin=null + $this: GET_VAR 'val tmp_4: kotlin.Int [val] declared in test.testArrayAccess' type=kotlin.Int origin=null + GET_VAR 'val tmp_4: kotlin.Int [val] declared in test.testArrayAccess' type=kotlin.Int origin=null diff --git a/compiler/testData/ir/irText/expressions/safeCalls.fir.txt b/compiler/testData/ir/irText/expressions/safeCalls.fir.txt index 7c53a733e55..7723450c19a 100644 --- a/compiler/testData/ir/irText/expressions/safeCalls.fir.txt +++ b/compiler/testData/ir/irText/expressions/safeCalls.fir.txt @@ -116,28 +116,39 @@ FILE fqName: fileName:/safeCalls.kt FUN name:test4 visibility:public modality:FINAL <> (x:.Ref?) returnType:kotlin.Unit VALUE_PARAMETER name:x index:0 type:.Ref? BLOCK_BODY - CALL 'public final fun (: kotlin.Int): kotlin.Unit declared in .Ref' type=kotlin.Unit origin=EQ - $this: GET_VAR 'x: .Ref? declared in .test4' type=.Ref? origin=null - : CONST Int type=kotlin.Int value=0 + BLOCK type=kotlin.Unit? origin=SAFE_CALL + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:.Ref? [val] + GET_VAR 'x: .Ref? declared in .test4' type=.Ref? origin=null + WHEN type=kotlin.Unit? origin=null + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_3: .Ref? [val] declared in .test4' type=.Ref? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public final fun (: kotlin.Int): kotlin.Unit declared in .Ref' type=kotlin.Unit origin=EQ + $this: GET_VAR 'val tmp_3: .Ref? [val] declared in .test4' type=.Ref? origin=null + : CONST Int type=kotlin.Int value=0 FUN name:test5 visibility:public modality:FINAL <> ($receiver:.IHost, s:kotlin.String?) returnType:kotlin.Int? $receiver: VALUE_PARAMETER name: type:.IHost VALUE_PARAMETER name:s index:0 type:kotlin.String? BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun test5 (s: kotlin.String?): kotlin.Int? declared in ' BLOCK type=kotlin.Int? origin=SAFE_CALL - VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.String? [val] + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlin.String? [val] GET_VAR 's: kotlin.String? declared in .test5' type=kotlin.String? origin=null WHEN type=kotlin.Int? origin=null BRANCH if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ - arg0: GET_VAR 'val tmp_3: kotlin.String? [val] declared in .test5' type=kotlin.String? origin=null + arg0: GET_VAR 'val tmp_4: kotlin.String? [val] declared in .test5' type=kotlin.String? origin=null arg1: CONST Null type=kotlin.Nothing? value=null then: CONST Null type=kotlin.Nothing? value=null BRANCH if: CONST Boolean type=kotlin.Boolean value=true then: CALL 'public open fun extLength (): kotlin.Int declared in .IHost' type=kotlin.Int origin=null $this: GET_VAR ': .IHost declared in .test5' type=.IHost origin=null - $receiver: GET_VAR 'val tmp_3: kotlin.String? [val] declared in .test5' type=kotlin.String? origin=null + $receiver: GET_VAR 'val tmp_4: kotlin.String? [val] declared in .test5' type=kotlin.String? origin=null FUN name:foo visibility:public modality:FINAL <> ($receiver:kotlin.Int) returnType:kotlin.Int $receiver: VALUE_PARAMETER name: type:kotlin.Int BLOCK_BODY @@ -145,16 +156,16 @@ FILE fqName: fileName:/safeCalls.kt CONST Int type=kotlin.Int value=239 FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY - BLOCK type=kotlin.Int? origin=SAFE_CALL - VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlin.Int [val] + BLOCK type=kotlin.Int origin=SAFE_CALL + VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlin.Int [val] CONST Int type=kotlin.Int value=42 - WHEN type=kotlin.Int? origin=null + WHEN type=kotlin.Int origin=null BRANCH if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ - arg0: GET_VAR 'val tmp_4: kotlin.Int [val] declared in .box' type=kotlin.Int origin=null + arg0: GET_VAR 'val tmp_5: kotlin.Int [val] declared in .box' type=kotlin.Int origin=null arg1: CONST Null type=kotlin.Nothing? value=null then: CONST Null type=kotlin.Nothing? value=null BRANCH if: CONST Boolean type=kotlin.Boolean value=true then: CALL 'public final fun foo (): kotlin.Int declared in ' type=kotlin.Int origin=null - $receiver: GET_VAR 'val tmp_4: kotlin.Int [val] declared in .box' type=kotlin.Int origin=null + $receiver: GET_VAR 'val tmp_5: kotlin.Int [val] declared in .box' type=kotlin.Int origin=null diff --git a/compiler/testData/ir/irText/expressions/smartCastsWithDestructuring.fir.txt b/compiler/testData/ir/irText/expressions/smartCastsWithDestructuring.fir.txt index cc5b7599bec..5776b9e0b2c 100644 --- a/compiler/testData/ir/irText/expressions/smartCastsWithDestructuring.fir.txt +++ b/compiler/testData/ir/irText/expressions/smartCastsWithDestructuring.fir.txt @@ -53,9 +53,7 @@ FILE fqName: fileName:/smartCastsWithDestructuring.kt GET_VAR 'x: .I1 declared in .test' type=.I1 origin=null VAR name:c1 type:kotlin.Int [val] CALL 'public final fun component1 (): kotlin.Int [operator] declared in ' type=kotlin.Int origin=null - $receiver: TYPE_OP type=.I1 origin=IMPLICIT_CAST typeOperand=.I1 - GET_VAR 'val tmp_0: .I2 [val] declared in .test' type=.I2 origin=null + $receiver: GET_VAR 'val tmp_0: .I2 [val] declared in .test' type=.I2 origin=null VAR name:c2 type:kotlin.String [val] CALL 'public final fun component2 (): kotlin.String [operator] declared in ' type=kotlin.String origin=null - $receiver: TYPE_OP type=.I1 origin=IMPLICIT_CAST typeOperand=.I1 - GET_VAR 'val tmp_0: .I2 [val] declared in .test' type=.I2 origin=null + $receiver: GET_VAR 'val tmp_0: .I2 [val] declared in .test' type=.I2 origin=null