From cb98588202a946cd66ec4ea215d9ee4b3ce8231f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Sch=C3=A4fer?= Date: Mon, 13 Jan 2020 12:38:14 +0100 Subject: [PATCH] Psi2Ir: Add an IrTextTest for enums with multiple constructors --- .../kotlin/fir/Fir2IrTextTestGenerated.java | 5 + .../classes/enumWithMultipleCtors.fir.txt | 363 ++++++++++++++++++ .../irText/classes/enumWithMultipleCtors.kt | 26 ++ .../irText/classes/enumWithMultipleCtors.txt | 222 +++++++++++ .../kotlin/ir/IrTextTestCaseGenerated.java | 5 + 5 files changed, 621 insertions(+) create mode 100644 compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt create mode 100644 compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt create mode 100644 compiler/testData/ir/irText/classes/enumWithMultipleCtors.txt diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java index ea3634063c4..84daeaeca1e 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java @@ -121,6 +121,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { runTest("compiler/testData/ir/irText/classes/enumClassModality.kt"); } + @TestMetadata("enumWithMultipleCtors.kt") + public void testEnumWithMultipleCtors() throws Exception { + runTest("compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt"); + } + @TestMetadata("enumWithSecondaryCtor.kt") public void testEnumWithSecondaryCtor() throws Exception { runTest("compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt"); diff --git a/compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt new file mode 100644 index 00000000000..1eacccbb75e --- /dev/null +++ b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt @@ -0,0 +1,363 @@ +FILE fqName: fileName:/enumWithMultipleCtors.kt + CLASS ENUM_CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Enum<.A>] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A + CLASS ENUM_ENTRY name:X modality:FINAL visibility:public superTypes:[.A] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.X + CONSTRUCTOR visibility:public <> () returnType:.A.X [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + arg: CONST String type=kotlin.String value="asd" + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:X modality:FINAL visibility:public superTypes:[.A]' + PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.X + PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.X + PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.X + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X, :kotlin.String) returnType:kotlin.Unit [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (: kotlin.String): kotlin.Unit declared in .A + $this: VALUE_PARAMETER name: type:.A.X + VALUE_PARAMETER name: index:0 type:kotlin.String + FUN FAKE_OVERRIDE name:f visibility:public modality:OPEN <> ($this:.A) returnType:kotlin.String [fake_override] + overridden: + public open fun f (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A + FUN FAKE_OVERRIDE name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> [fake_override] + overridden: + public final fun values (): kotlin.Array<.A> declared in .A + $this: VALUE_PARAMETER name: type:.A + FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:.A, value:kotlin.String) returnType:.A [fake_override] + overridden: + public final fun valueOf (value: kotlin.String): .A declared in .A + $this: VALUE_PARAMETER name: type:.A + VALUE_PARAMETER name:value index:0 type:kotlin.String + FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override] + overridden: + protected final fun clone (): kotlin.Any declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum, other:.A) returnType:kotlin.Int [fake_override,operator] + overridden: + public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:.A + FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Int [fake_override] + overridden: + public final fun hashCode (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A.X + PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A.X + CLASS ENUM_ENTRY name:Y modality:FINAL visibility:public superTypes:[.A] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.Y + CONSTRUCTOR visibility:public <> () returnType:.A.Y [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Y modality:FINAL visibility:public superTypes:[.A]' + FUN name:f visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String + $this: VALUE_PARAMETER name: type:.A.Y + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun f (): kotlin.String declared in .A.Y' + CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=null + $this: CALL 'public open fun f (): kotlin.String declared in .A' type=kotlin.String origin=null + $this: ERROR_CALL 'Unresolved reference: super' type=.A + other: CONST String type=kotlin.String value="#Y" + PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.Y + PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.Y + PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.Y + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y, :kotlin.String) returnType:kotlin.Unit [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (: kotlin.String): kotlin.Unit declared in .A + $this: VALUE_PARAMETER name: type:.A.Y + VALUE_PARAMETER name: index:0 type:kotlin.String + FUN FAKE_OVERRIDE name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> [fake_override] + overridden: + public final fun values (): kotlin.Array<.A> declared in .A + $this: VALUE_PARAMETER name: type:.A + FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:.A, value:kotlin.String) returnType:.A [fake_override] + overridden: + public final fun valueOf (value: kotlin.String): .A declared in .A + $this: VALUE_PARAMETER name: type:.A + VALUE_PARAMETER name:value index:0 type:kotlin.String + FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override] + overridden: + protected final fun clone (): kotlin.Any declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum, other:.A) returnType:kotlin.Int [fake_override,operator] + overridden: + public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:.A + FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Int [fake_override] + overridden: + public final fun hashCode (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A.Y + PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A.Y + CLASS ENUM_ENTRY name:Z modality:FINAL visibility:public superTypes:[.A] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.Z + CONSTRUCTOR visibility:public <> () returnType:.A.Z [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + arg: CONST Int type=kotlin.Int value=5 + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Z modality:FINAL visibility:public superTypes:[.A]' + PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.Z + PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.Z + PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.Z + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z, :kotlin.String) returnType:kotlin.Unit [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (: kotlin.String): kotlin.Unit declared in .A + $this: VALUE_PARAMETER name: type:.A.Z + VALUE_PARAMETER name: index:0 type:kotlin.String + FUN FAKE_OVERRIDE name:f visibility:public modality:OPEN <> ($this:.A) returnType:kotlin.String [fake_override] + overridden: + public open fun f (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A + FUN FAKE_OVERRIDE name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> [fake_override] + overridden: + public final fun values (): kotlin.Array<.A> declared in .A + $this: VALUE_PARAMETER name: type:.A + FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:.A, value:kotlin.String) returnType:.A [fake_override] + overridden: + public final fun valueOf (value: kotlin.String): .A declared in .A + $this: VALUE_PARAMETER name: type:.A + VALUE_PARAMETER name:value index:0 type:kotlin.String + FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override] + overridden: + protected final fun clone (): kotlin.Any declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum, other:.A) returnType:kotlin.Int [fake_override,operator] + overridden: + public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:.A + FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Int [fake_override] + overridden: + public final fun hashCode (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A.Z + PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A.Z + PROPERTY name:prop1 visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String + correspondingProperty: PROPERTY name:prop1 visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in .A' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final]' type=kotlin.String origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + PROPERTY name:prop2 visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:prop2 type:kotlin.String visibility:private [final] + EXPRESSION_BODY + CONST String type=kotlin.String value="const2" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String + correspondingProperty: PROPERTY name:prop2 visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in .A' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop2 type:kotlin.String visibility:private [final]' type=kotlin.String origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + PROPERTY name:prop3 visibility:public modality:FINAL [var] + FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private + EXPRESSION_BODY + CONST String type=kotlin.String value="" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String + correspondingProperty: PROPERTY name:prop3 visibility:public modality:FINAL [var] + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in .A' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private' type=kotlin.String origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A, :kotlin.String) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:prop3 visibility:public modality:FINAL [var] + $this: VALUE_PARAMETER name: type:.A + VALUE_PARAMETER name: index:0 type:kotlin.String + BLOCK_BODY + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + value: GET_VAR ': kotlin.String declared in .A.' type=kotlin.String origin=null + CONSTRUCTOR visibility:private <> (arg:kotlin.String) returnType:.A + VALUE_PARAMETER name:arg index:0 type:kotlin.String + BLOCK_BODY + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final]' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A' type=.A origin=null + value: GET_VAR 'arg: kotlin.String declared in .A.' type=kotlin.String origin=null + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Enum<.A>]' + CONSTRUCTOR visibility:private <> () returnType:.A + BLOCK_BODY + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final]' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A' type=.A origin=null + value: CONST String type=kotlin.String value="default" + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A' type=.A origin=null + value: CONST String type=kotlin.String value="empty" + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Enum<.A>]' + CONSTRUCTOR visibility:private <> (x:kotlin.Int) returnType:.A + VALUE_PARAMETER name:x index:0 type:kotlin.Int + BLOCK_BODY + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A' type=.A origin=null + value: CONST String type=kotlin.String value="int" + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + arg: CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null + $this: GET_VAR 'x: kotlin.Int declared in .A.' type=kotlin.Int origin=null + FUN name:f visibility:public modality:OPEN <> ($this:.A) returnType:kotlin.String + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun f (): kotlin.String declared in .A' + STRING_CONCATENATION type=kotlin.String + CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null + $this: CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=null + $this: GET_VAR ': .A declared in .A' type=.A origin=null + CONST String type=kotlin.String value="#" + CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null + $this: CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=null + $this: GET_VAR ': .A declared in .A' type=.A origin=null + CONST String type=kotlin.String value="#" + CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null + $this: CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=null + $this: GET_VAR ': .A declared in .A' type=.A origin=null + FUN name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + FUN name:valueOf visibility:public modality:FINAL <> ($this:.A, value:kotlin.String) returnType:.A + $this: VALUE_PARAMETER name: type:.A + VALUE_PARAMETER name:value index:0 type:kotlin.String + BLOCK_BODY + FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override] + overridden: + protected final fun clone (): kotlin.Any declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum, other:.A) returnType:kotlin.Int [fake_override,operator] + overridden: + public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:.A + FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Int [fake_override] + overridden: + public final fun hashCode (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum + PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A + PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:.A diff --git a/compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt new file mode 100644 index 00000000000..d8d225effde --- /dev/null +++ b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt @@ -0,0 +1,26 @@ +enum class A { + X("asd"), + Y() { + override fun f() = super.f() + "#Y" + }, + Z(5); + + val prop1: String + val prop2: String = "const2" + var prop3: String = "" + + constructor(arg: String) { + prop1 = arg + } + + constructor() { + prop1 = "default" + prop3 = "empty" + } + + constructor(x: Int): this(x.toString()) { + prop3 = "int" + } + + open fun f(): String = "$prop1#$prop2#$prop3" +} diff --git a/compiler/testData/ir/irText/classes/enumWithMultipleCtors.txt b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.txt new file mode 100644 index 00000000000..0f6b100b1b2 --- /dev/null +++ b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.txt @@ -0,0 +1,222 @@ +FILE fqName: fileName:/enumWithMultipleCtors.kt + CLASS ENUM_CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Enum<.A>] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A + ENUM_ENTRY name:X + init: ENUM_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + arg: CONST String type=kotlin.String value="asd" + ENUM_ENTRY name:Y + init: ENUM_CONSTRUCTOR_CALL 'private constructor () [primary] declared in .A.Y' + class: CLASS ENUM_ENTRY name:Y modality:FINAL visibility:public superTypes:[.A] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.Y + CONSTRUCTOR visibility:private <> () returnType:.A.Y [primary] + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + ENUM_CONSTRUCTOR_CALL 'private constructor () declared in .A' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Y modality:FINAL visibility:public superTypes:[.A]' + FUN name:f visibility:public modality:OPEN <> ($this:.A.Y) returnType:kotlin.String + overridden: + public open fun f (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A.Y + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun f (): kotlin.String declared in .A.Y' + CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=PLUS + $this: CALL 'public open fun f (): kotlin.String declared in .A' superQualifier='CLASS ENUM_CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Enum<.A>]' type=kotlin.String origin=null + $this: GET_VAR ': .A.Y declared in .A.Y.f' type=.A.Y origin=null + other: CONST String type=kotlin.String value="#Y" + FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Any [fake_override] + overridden: + protected final fun clone (): kotlin.Any [fake_override] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN FAKE_OVERRIDE name:finalize visibility:protected/*protected and package*/ modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Unit [fake_override] + overridden: + protected/*protected and package*/ final fun finalize (): kotlin.Unit [fake_override] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN FAKE_OVERRIDE name:getDeclaringClass visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:java.lang.Class<.A?>? [fake_override] + overridden: + public final fun getDeclaringClass (): java.lang.Class<.A?>? [fake_override] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>, other:.A) returnType:kotlin.Int [fake_override,operator] + overridden: + public final fun compareTo (other: .A): kotlin.Int [fake_override,operator] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + VALUE_PARAMETER name:other index:0 type:.A + FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public final fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Int [fake_override] + overridden: + public final fun hashCode (): kotlin.Int [fake_override] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String [fake_override] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Int [fake_override] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A + PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A + PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (): kotlin.String declared in .A + $this: VALUE_PARAMETER name: type:.A + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A, :kotlin.String) returnType:kotlin.Unit [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] + overridden: + public final fun (: kotlin.String): kotlin.Unit declared in .A + $this: VALUE_PARAMETER name: type:.A + VALUE_PARAMETER name: index:0 type:kotlin.String + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum<.A>) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String [fake_override] declared in .A + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + ENUM_ENTRY name:Z + init: ENUM_CONSTRUCTOR_CALL 'private constructor (x: kotlin.Int) declared in .A' + x: CONST Int type=kotlin.Int value=5 + PROPERTY name:prop1 visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String + correspondingProperty: PROPERTY name:prop1 visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in .A' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final]' type=kotlin.String origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + PROPERTY name:prop2 visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:prop2 type:kotlin.String visibility:private [final] + EXPRESSION_BODY + CONST String type=kotlin.String value="const2" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String + correspondingProperty: PROPERTY name:prop2 visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in .A' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop2 type:kotlin.String visibility:private [final]' type=kotlin.String origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + PROPERTY name:prop3 visibility:public modality:FINAL [var] + FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private + EXPRESSION_BODY + CONST String type=kotlin.String value="" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String + correspondingProperty: PROPERTY name:prop3 visibility:public modality:FINAL [var] + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in .A' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private' type=kotlin.String origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A, :kotlin.String) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:prop3 visibility:public modality:FINAL [var] + $this: VALUE_PARAMETER name: type:.A + VALUE_PARAMETER name: index:0 type:kotlin.String + BLOCK_BODY + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop3 type:kotlin.String visibility:private' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A.' type=.A origin=null + value: GET_VAR ': kotlin.String declared in .A.' type=kotlin.String origin=null + CONSTRUCTOR visibility:private <> (arg:kotlin.String) returnType:.A + VALUE_PARAMETER name:arg index:0 type:kotlin.String + BLOCK_BODY + ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' + : .A + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Enum<.A>]' + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final]' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A' type=.A origin=null + value: GET_VAR 'arg: kotlin.String declared in .A.' type=kotlin.String origin=null + CONSTRUCTOR visibility:private <> () returnType:.A + BLOCK_BODY + ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' + : .A + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Enum<.A>]' + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final]' type=kotlin.Unit origin=null + receiver: GET_VAR ': .A declared in .A' type=.A origin=null + value: CONST String type=kotlin.String value="default" + CALL 'public final fun (: kotlin.String): kotlin.Unit declared in .A' type=kotlin.Unit origin=EQ + $this: GET_VAR ': .A declared in .A' type=.A origin=null + : CONST String type=kotlin.String value="empty" + CONSTRUCTOR visibility:private <> (x:kotlin.Int) returnType:.A + VALUE_PARAMETER name:x index:0 type:kotlin.Int + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + arg: CALL 'public open fun toString (): kotlin.String [fake_override] declared in kotlin.Int' type=kotlin.String origin=null + $this: GET_VAR 'x: kotlin.Int declared in .A.' type=kotlin.Int origin=null + CALL 'public final fun (: kotlin.String): kotlin.Unit declared in .A' type=kotlin.Unit origin=EQ + $this: GET_VAR ': .A declared in .A' type=.A origin=null + : CONST String type=kotlin.String value="int" + FUN name:f visibility:public modality:OPEN <> ($this:.A) returnType:kotlin.String + $this: VALUE_PARAMETER name: type:.A + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun f (): kotlin.String declared in .A' + STRING_CONCATENATION type=kotlin.String + CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=GET_PROPERTY + $this: GET_VAR ': .A declared in .A.f' type=.A origin=null + CONST String type=kotlin.String value="#" + CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=GET_PROPERTY + $this: GET_VAR ': .A declared in .A.f' type=.A origin=null + CONST String type=kotlin.String value="#" + CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=GET_PROPERTY + $this: GET_VAR ': .A declared in .A.f' type=.A origin=null + FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Any [fake_override] + overridden: + protected final fun clone (): kotlin.Any declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN FAKE_OVERRIDE name:finalize visibility:protected/*protected and package*/ modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Unit [fake_override] + overridden: + protected/*protected and package*/ final fun finalize (): kotlin.Unit declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN FAKE_OVERRIDE name:getDeclaringClass visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:java.lang.Class<.A?>? [fake_override] + overridden: + public final fun getDeclaringClass (): java.lang.Class? declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>, other:.A) returnType:kotlin.Int [fake_override,operator] + overridden: + public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + VALUE_PARAMETER name:other index:0 type:.A + FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Int [fake_override] + overridden: + public final fun hashCode (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.String [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:kotlin.Enum<.A>) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.Int declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum<.A>) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Enum + $this: VALUE_PARAMETER name: type:kotlin.Enum<.A> + FUN ENUM_CLASS_SPECIAL_MEMBER name:values visibility:public modality:FINAL <> () returnType:kotlin.Array<.A> + SYNTHETIC_BODY kind=ENUM_VALUES + FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:.A + VALUE_PARAMETER name:value index:0 type:kotlin.String + SYNTHETIC_BODY kind=ENUM_VALUEOF diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index 3344ae32ce7..21b62e692f4 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -120,6 +120,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { runTest("compiler/testData/ir/irText/classes/enumClassModality.kt"); } + @TestMetadata("enumWithMultipleCtors.kt") + public void testEnumWithMultipleCtors() throws Exception { + runTest("compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt"); + } + @TestMetadata("enumWithSecondaryCtor.kt") public void testEnumWithSecondaryCtor() throws Exception { runTest("compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt");