From 2706e5502fb5f9d53be210aa74968f5eeeda0aba Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Wed, 8 Mar 2023 17:36:29 +0100 Subject: [PATCH] [Tests] Add IR text tests for KT-57105 --- .../ir/FirLightTreeIrTextTestGenerated.java | 6 ++ .../runners/ir/FirPsiIrTextTestGenerated.java | 6 ++ .../smartCastInValInitialization.fir.ir.txt | 62 ++++++++++++++++++ .../smartCastInValInitialization.fir.kt.txt | 25 ++++++++ .../smartCastInValInitialization.ir.txt | 64 +++++++++++++++++++ .../classes/smartCastInValInitialization.kt | 10 +++ .../smartCastInValInitialization.kt.txt | 25 ++++++++ .../test/runners/ir/IrTextTestGenerated.java | 6 ++ .../klib/KlibTextTestCaseGenerated.java | 5 ++ 9 files changed, 209 insertions(+) create mode 100644 compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.ir.txt create mode 100644 compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.kt.txt create mode 100644 compiler/testData/ir/irText/classes/smartCastInValInitialization.ir.txt create mode 100644 compiler/testData/ir/irText/classes/smartCastInValInitialization.kt create mode 100644 compiler/testData/ir/irText/classes/smartCastInValInitialization.kt.txt diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeIrTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeIrTextTestGenerated.java index a9b5082b2e8..f1333185b0a 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeIrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeIrTextTestGenerated.java @@ -304,6 +304,12 @@ public class FirLightTreeIrTextTestGenerated extends AbstractFirLightTreeIrTextT runTest("compiler/testData/ir/irText/classes/secondaryConstructors.kt"); } + @Test + @TestMetadata("smartCastInValInitialization.kt") + public void testSmartCastInValInitialization() throws Exception { + runTest("compiler/testData/ir/irText/classes/smartCastInValInitialization.kt"); + } + @Test @TestMetadata("superCalls.kt") public void testSuperCalls() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiIrTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiIrTextTestGenerated.java index a4a59107bff..0481d90abed 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiIrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiIrTextTestGenerated.java @@ -304,6 +304,12 @@ public class FirPsiIrTextTestGenerated extends AbstractFirPsiIrTextTest { runTest("compiler/testData/ir/irText/classes/secondaryConstructors.kt"); } + @Test + @TestMetadata("smartCastInValInitialization.kt") + public void testSmartCastInValInitialization() throws Exception { + runTest("compiler/testData/ir/irText/classes/smartCastInValInitialization.kt"); + } + @Test @TestMetadata("superCalls.kt") public void testSuperCalls() throws Exception { diff --git a/compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.ir.txt b/compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.ir.txt new file mode 100644 index 00000000000..1d443f7960c --- /dev/null +++ b/compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.ir.txt @@ -0,0 +1,62 @@ +FILE fqName: fileName:/smartCastInValInitialization.kt + CLASS CLASS name:RootBus modality:FINAL visibility:public superTypes:[.MessageBusImpl] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.RootBus + CONSTRUCTOR visibility:public <> () returnType:.RootBus [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in .MessageBusImpl' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:RootBus modality:FINAL visibility:public superTypes:[.MessageBusImpl]' + PROPERTY FAKE_OVERRIDE name:parentBus visibility:public modality:FINAL [fake_override,val] + overridden: + public final parentBus: kotlin.Any? [val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.MessageBusImpl) returnType:kotlin.Any? [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:parentBus visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Any? declared in .MessageBusImpl + $this: VALUE_PARAMETER name: type:.MessageBusImpl + 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 [fake_override,operator] declared in .MessageBusImpl + $this: VALUE_PARAMETER name: 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 [fake_override] declared in .MessageBusImpl + $this: VALUE_PARAMETER name: 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 [fake_override] declared in .MessageBusImpl + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:MessageBusImpl modality:OPEN visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.MessageBusImpl + CONSTRUCTOR visibility:public <> () returnType:.MessageBusImpl [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MessageBusImpl modality:OPEN visibility:public superTypes:[kotlin.Any]' + PROPERTY name:parentBus visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:parentBus type:kotlin.Any? visibility:private [final] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.MessageBusImpl) returnType:kotlin.Any? + correspondingProperty: PROPERTY name:parentBus visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.MessageBusImpl + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.Any? declared in .MessageBusImpl' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:parentBus type:kotlin.Any? visibility:private [final]' type=kotlin.Any? origin=null + receiver: GET_VAR ': .MessageBusImpl declared in .MessageBusImpl.' type=.MessageBusImpl origin=null + ANONYMOUS_INITIALIZER isStatic=false + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + TYPE_OP type=.RootBus origin=CAST typeOperand=.RootBus + GET_VAR ': .MessageBusImpl declared in .MessageBusImpl' type=.MessageBusImpl origin=null + ERROR_CALL 'Unresolved reference: R|/MessageBusImpl.parentBus|' type=IrErrorType(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 [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: 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: 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: type:kotlin.Any diff --git a/compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.kt.txt b/compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.kt.txt new file mode 100644 index 00000000000..7413055c9a4 --- /dev/null +++ b/compiler/testData/ir/irText/classes/smartCastInValInitialization.fir.kt.txt @@ -0,0 +1,25 @@ +class RootBus : MessageBusImpl { + constructor() /* primary */ { + super/*MessageBusImpl*/() + /* () */ + + } + +} + +open class MessageBusImpl { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + val parentBus: Any? + get + + init { + as RootBus /*~> Unit */ + error("") /* ErrorCallExpression */ + } + +} diff --git a/compiler/testData/ir/irText/classes/smartCastInValInitialization.ir.txt b/compiler/testData/ir/irText/classes/smartCastInValInitialization.ir.txt new file mode 100644 index 00000000000..e1c60957b93 --- /dev/null +++ b/compiler/testData/ir/irText/classes/smartCastInValInitialization.ir.txt @@ -0,0 +1,64 @@ +FILE fqName: fileName:/smartCastInValInitialization.kt + CLASS CLASS name:RootBus modality:FINAL visibility:public superTypes:[.MessageBusImpl] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.RootBus + CONSTRUCTOR visibility:public <> () returnType:.RootBus [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in .MessageBusImpl' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:RootBus modality:FINAL visibility:public superTypes:[.MessageBusImpl]' + PROPERTY FAKE_OVERRIDE name:parentBus visibility:public modality:FINAL [fake_override,val] + overridden: + public final parentBus: kotlin.Any? [val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.MessageBusImpl) returnType:kotlin.Any? [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:parentBus visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Any? declared in .MessageBusImpl + $this: VALUE_PARAMETER name: type:.MessageBusImpl + 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 [fake_override,operator] declared in .MessageBusImpl + $this: VALUE_PARAMETER name: 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 [fake_override] declared in .MessageBusImpl + $this: VALUE_PARAMETER name: 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 [fake_override] declared in .MessageBusImpl + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:MessageBusImpl modality:OPEN visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.MessageBusImpl + CONSTRUCTOR visibility:public <> () returnType:.MessageBusImpl [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MessageBusImpl modality:OPEN visibility:public superTypes:[kotlin.Any]' + PROPERTY name:parentBus visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:parentBus type:kotlin.Any? visibility:private [final] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.MessageBusImpl) returnType:kotlin.Any? + correspondingProperty: PROPERTY name:parentBus visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.MessageBusImpl + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.Any? declared in .MessageBusImpl' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:parentBus type:kotlin.Any? visibility:private [final]' type=kotlin.Any? origin=null + receiver: GET_VAR ': .MessageBusImpl declared in .MessageBusImpl.' type=.MessageBusImpl origin=null + ANONYMOUS_INITIALIZER isStatic=false + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + TYPE_OP type=.RootBus origin=CAST typeOperand=.RootBus + GET_VAR ': .MessageBusImpl declared in .MessageBusImpl' type=.MessageBusImpl origin=null + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:parentBus type:kotlin.Any? visibility:private [final]' type=kotlin.Unit origin=null + receiver: GET_VAR ': .MessageBusImpl declared in .MessageBusImpl' type=.MessageBusImpl origin=null + value: CONST Null type=kotlin.Nothing? value=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 [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: 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: 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: type:kotlin.Any diff --git a/compiler/testData/ir/irText/classes/smartCastInValInitialization.kt b/compiler/testData/ir/irText/classes/smartCastInValInitialization.kt new file mode 100644 index 00000000000..39cec492f95 --- /dev/null +++ b/compiler/testData/ir/irText/classes/smartCastInValInitialization.kt @@ -0,0 +1,10 @@ +class RootBus: MessageBusImpl() + +open class MessageBusImpl { + val parentBus: Any? + + init { + this as RootBus + parentBus = null + } +} diff --git a/compiler/testData/ir/irText/classes/smartCastInValInitialization.kt.txt b/compiler/testData/ir/irText/classes/smartCastInValInitialization.kt.txt new file mode 100644 index 00000000000..8e3bee2904b --- /dev/null +++ b/compiler/testData/ir/irText/classes/smartCastInValInitialization.kt.txt @@ -0,0 +1,25 @@ +class RootBus : MessageBusImpl { + constructor() /* primary */ { + super/*MessageBusImpl*/() + /* () */ + + } + +} + +open class MessageBusImpl { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + val parentBus: Any? + get + + init { + as RootBus /*~> Unit */ + .#parentBus = null + } + +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java index 9bea660d1db..0b496e63010 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java @@ -304,6 +304,12 @@ public class IrTextTestGenerated extends AbstractIrTextTest { runTest("compiler/testData/ir/irText/classes/secondaryConstructors.kt"); } + @Test + @TestMetadata("smartCastInValInitialization.kt") + public void testSmartCastInValInitialization() throws Exception { + runTest("compiler/testData/ir/irText/classes/smartCastInValInitialization.kt"); + } + @Test @TestMetadata("superCalls.kt") public void testSuperCalls() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibTextTestCaseGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibTextTestCaseGenerated.java index 3ddd1cc3f42..8517e5504e5 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibTextTestCaseGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibTextTestCaseGenerated.java @@ -227,6 +227,11 @@ public class KlibTextTestCaseGenerated extends AbstractKlibTextTestCase { runTest("compiler/testData/ir/irText/classes/secondaryConstructors.kt"); } + @TestMetadata("smartCastInValInitialization.kt") + public void testSmartCastInValInitialization() throws Exception { + runTest("compiler/testData/ir/irText/classes/smartCastInValInitialization.kt"); + } + @TestMetadata("superCalls.kt") public void testSuperCalls() throws Exception { runTest("compiler/testData/ir/irText/classes/superCalls.kt");