diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index de3744de855..de69e979f6b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -193,7 +193,9 @@ class Fir2IrClassifierStorage( declarations.any { it is FirCallableDeclaration && it.modality == Modality.ABSTRACT } -> { Modality.ABSTRACT } - declarations.none { it is FirEnumEntry && it.initializer != null } -> { + declarations.none { + it is FirEnumEntry && isEnumEntryWhichRequiresSubclass(it) + } -> { Modality.FINAL } hasAbstractMembersInScope() -> { @@ -558,15 +560,14 @@ class Fir2IrClassifierStorage( if (irParent != null) { this.parent = irParent } - val initializer = enumEntry.initializer - if (initializer is FirAnonymousObjectExpression) { - // An enum entry with its own members - if (initializer.anonymousObject.declarations.any { it !is FirConstructor }) { - val klass = getIrAnonymousObjectForEnumEntry(initializer.anonymousObject, enumEntry.name, irParent) - this.correspondingClass = klass - } + if (isEnumEntryWhichRequiresSubclass(enumEntry)) { + // An enum entry with its own members requires an anonymous object generated. // Otherwise, this is a default-ish enum entry whose initializer would be a delegating constructor call, // which will be translated via visitor later. + val klass = getIrAnonymousObjectForEnumEntry( + (enumEntry.initializer as FirAnonymousObjectExpression).anonymousObject, enumEntry.name, irParent + ) + this.correspondingClass = klass } declarationStorage.leaveScope(this) } @@ -576,6 +577,11 @@ class Fir2IrClassifierStorage( } } + private fun isEnumEntryWhichRequiresSubclass(enumEntry: FirEnumEntry): Boolean { + val initializer = enumEntry.initializer + return initializer is FirAnonymousObjectExpression && initializer.anonymousObject.declarations.any { it !is FirConstructor } + } + fun getIrClassSymbol(firClassSymbol: FirClassSymbol<*>, forceTopLevelPrivate: Boolean = false): IrClassSymbol { val firClass = firClassSymbol.fir getCachedIrClass(firClass)?.let { return it.symbol } diff --git a/compiler/testData/codegen/bytecodeListing/deprecated/deprecatedEnumEntryFields.kt b/compiler/testData/codegen/bytecodeListing/deprecated/deprecatedEnumEntryFields.kt index a200b54aa67..57c96eddd6e 100644 --- a/compiler/testData/codegen/bytecodeListing/deprecated/deprecatedEnumEntryFields.kt +++ b/compiler/testData/codegen/bytecodeListing/deprecated/deprecatedEnumEntryFields.kt @@ -1,6 +1,4 @@ // WITH_STDLIB -// IGNORE_BACKEND_K2: JVM_IR -// FIR status: KT-57216 K2: non-trivial enum declaration does not have ACC_FINAL in the bytecode enum class Test { @Deprecated("") ENTRY1, diff --git a/compiler/testData/codegen/bytecodeListing/enum.kt b/compiler/testData/codegen/bytecodeListing/enum.kt index a933c98ab47..1546a141a82 100644 --- a/compiler/testData/codegen/bytecodeListing/enum.kt +++ b/compiler/testData/codegen/bytecodeListing/enum.kt @@ -1,6 +1,3 @@ -// IGNORE_BACKEND_K2: JVM_IR -// FIR status: KT-57216 K2: non-trivial enum declaration does not have ACC_FINAL in the bytecode - enum class SimpleEnum { A, B, C } diff --git a/compiler/testData/codegen/bytecodeListing/enumEntries.kt b/compiler/testData/codegen/bytecodeListing/enumEntries.kt index aa377ca30be..a1f7de90484 100644 --- a/compiler/testData/codegen/bytecodeListing/enumEntries.kt +++ b/compiler/testData/codegen/bytecodeListing/enumEntries.kt @@ -3,9 +3,6 @@ // FULL_JDK // WITH_STDLIB -// IGNORE_BACKEND_K2: JVM_IR -// FIR status: KT-57216 K2: non-trivial enum declaration does not have ACC_FINAL in the bytecode - enum class SimpleEnum { A, B, C } diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.kt index a0e59d3f76d..31a0d1ef9bd 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.kt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.kt @@ -1,6 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_K2: JVM_IR -// FIR status: KT-57216 K2: non-trivial enum declaration does not have ACC_FINAL in the bytecode inline class Z(val x: Int) diff --git a/compiler/testData/ir/irText/classes/enum.fir.ir.txt b/compiler/testData/ir/irText/classes/enum.fir.ir.txt index dcb359665af..e06f3ceb530 100644 --- a/compiler/testData/ir/irText/classes/enum.fir.ir.txt +++ b/compiler/testData/ir/irText/classes/enum.fir.ir.txt @@ -61,14 +61,14 @@ FILE fqName: fileName:/enum.kt overridden: public final fun (): kotlin.Int declared in kotlin.Enum $this: VALUE_PARAMETER name: type:kotlin.Enum - CLASS ENUM_CLASS name:TestEnum2 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestEnum2>] + CLASS ENUM_CLASS name:TestEnum2 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestEnum2>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.TestEnum2 CONSTRUCTOR visibility:private <> (x:kotlin.Int) returnType:.TestEnum2 [primary] VALUE_PARAMETER name:x index:0 type:kotlin.Int BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .TestEnum2 - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestEnum2 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestEnum2>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestEnum2 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestEnum2>]' PROPERTY name:x visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final] EXPRESSION_BODY @@ -470,7 +470,7 @@ FILE fqName: fileName:/enum.kt overridden: public final fun (): kotlin.Int declared in kotlin.Enum $this: VALUE_PARAMETER name: type:kotlin.Enum - CLASS ENUM_CLASS name:TestEnum5 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestEnum5>] + CLASS ENUM_CLASS name:TestEnum5 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestEnum5>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.TestEnum5 CONSTRUCTOR visibility:private <> (x:kotlin.Int) returnType:.TestEnum5 [primary] VALUE_PARAMETER name:x index:0 type:kotlin.Int @@ -479,7 +479,7 @@ FILE fqName: fileName:/enum.kt BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .TestEnum5 - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestEnum5 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestEnum5>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestEnum5 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestEnum5>]' PROPERTY name:x visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final] EXPRESSION_BODY @@ -554,7 +554,7 @@ FILE fqName: fileName:/enum.kt BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun f (): kotlin.Int declared in ' CONST Int type=kotlin.Int value=1 - CLASS ENUM_CLASS name:TestEnum6 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestEnum6>] + CLASS ENUM_CLASS name:TestEnum6 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestEnum6>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.TestEnum6 CONSTRUCTOR visibility:private <> (x:kotlin.Int, y:kotlin.Int) returnType:.TestEnum6 [primary] VALUE_PARAMETER name:x index:0 type:kotlin.Int @@ -562,7 +562,7 @@ FILE fqName: fileName:/enum.kt BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .TestEnum6 - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestEnum6 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestEnum6>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestEnum6 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestEnum6>]' PROPERTY name:x visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final] EXPRESSION_BODY diff --git a/compiler/testData/ir/irText/classes/enum.fir.kt.txt b/compiler/testData/ir/irText/classes/enum.fir.kt.txt index 5b44caa02a7..f975e403152 100644 --- a/compiler/testData/ir/irText/classes/enum.fir.kt.txt +++ b/compiler/testData/ir/irText/classes/enum.fir.kt.txt @@ -18,7 +18,7 @@ enum class TestEnum1 : Enum { } -open enum class TestEnum2 : Enum { +enum class TestEnum2 : Enum { private constructor(x: Int) /* primary */ { super/*Enum*/() /* () */ @@ -131,7 +131,7 @@ abstract enum class TestEnum4 : Enum { } -open enum class TestEnum5 : Enum { +enum class TestEnum5 : Enum { private constructor(x: Int = 0) /* primary */ { super/*Enum*/() /* () */ @@ -161,7 +161,7 @@ fun f(): Int { return 1 } -open enum class TestEnum6 : Enum { +enum class TestEnum6 : Enum { private constructor(x: Int, y: Int) /* primary */ { super/*Enum*/() /* () */ diff --git a/compiler/testData/ir/irText/classes/enumClassModality.fir.ir.txt b/compiler/testData/ir/irText/classes/enumClassModality.fir.ir.txt index 728ecafbd2f..83331625d81 100644 --- a/compiler/testData/ir/irText/classes/enumClassModality.fir.ir.txt +++ b/compiler/testData/ir/irText/classes/enumClassModality.fir.ir.txt @@ -58,14 +58,14 @@ FILE fqName: fileName:/enumClassModality.kt overridden: public final fun (): kotlin.Int declared in kotlin.Enum $this: VALUE_PARAMETER name: type:kotlin.Enum - CLASS ENUM_CLASS name:TestFinalEnum2 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestFinalEnum2>] + CLASS ENUM_CLASS name:TestFinalEnum2 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestFinalEnum2>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.TestFinalEnum2 CONSTRUCTOR visibility:private <> (x:kotlin.Int) returnType:.TestFinalEnum2 [primary] VALUE_PARAMETER name:x index:0 type:kotlin.Int BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .TestFinalEnum2 - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestFinalEnum2 modality:OPEN visibility:public superTypes:[kotlin.Enum<.TestFinalEnum2>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:TestFinalEnum2 modality:FINAL visibility:public superTypes:[kotlin.Enum<.TestFinalEnum2>]' PROPERTY name:x visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final] EXPRESSION_BODY diff --git a/compiler/testData/ir/irText/classes/enumClassModality.fir.kt.txt b/compiler/testData/ir/irText/classes/enumClassModality.fir.kt.txt index b06a3d26b50..8ccb08e6b8f 100644 --- a/compiler/testData/ir/irText/classes/enumClassModality.fir.kt.txt +++ b/compiler/testData/ir/irText/classes/enumClassModality.fir.kt.txt @@ -16,7 +16,7 @@ enum class TestFinalEnum1 : Enum { } -open enum class TestFinalEnum2 : Enum { +enum class TestFinalEnum2 : Enum { private constructor(x: Int) /* primary */ { super/*Enum*/() /* () */ @@ -184,3 +184,4 @@ abstract enum class TestAbstractEnum2 : IFoo, Enum { get(): EnumEntries /* Synthetic body for ENUM_ENTRIES */ } + diff --git a/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.ir.txt b/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.ir.txt index bc91e5e4cae..f9a8c0b75b4 100644 --- a/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.ir.txt +++ b/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.ir.txt @@ -1,12 +1,12 @@ FILE fqName: fileName:/enumWithSecondaryCtor.kt - CLASS ENUM_CLASS name:Test0 modality:OPEN visibility:public superTypes:[kotlin.Enum<.Test0>] + CLASS ENUM_CLASS name:Test0 modality:FINAL visibility:public superTypes:[kotlin.Enum<.Test0>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Test0 CONSTRUCTOR visibility:private <> (x:kotlin.Int) returnType:.Test0 [primary] VALUE_PARAMETER name:x index:0 type:kotlin.Int BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .Test0 - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:Test0 modality:OPEN visibility:public superTypes:[kotlin.Enum<.Test0>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:Test0 modality:FINAL visibility:public superTypes:[kotlin.Enum<.Test0>]' PROPERTY name:x visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final] EXPRESSION_BODY @@ -74,14 +74,14 @@ FILE fqName: fileName:/enumWithSecondaryCtor.kt overridden: public final fun (): kotlin.Int declared in kotlin.Enum $this: VALUE_PARAMETER name: type:kotlin.Enum - CLASS ENUM_CLASS name:Test1 modality:OPEN visibility:public superTypes:[kotlin.Enum<.Test1>] + CLASS ENUM_CLASS name:Test1 modality:FINAL visibility:public superTypes:[kotlin.Enum<.Test1>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Test1 CONSTRUCTOR visibility:private <> (x:kotlin.Int) returnType:.Test1 [primary] VALUE_PARAMETER name:x index:0 type:kotlin.Int BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .Test1 - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:Test1 modality:OPEN visibility:public superTypes:[kotlin.Enum<.Test1>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:Test1 modality:FINAL visibility:public superTypes:[kotlin.Enum<.Test1>]' PROPERTY name:x visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final] EXPRESSION_BODY diff --git a/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.kt.txt b/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.kt.txt index deca8237e81..37a7b7dd8ac 100644 --- a/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.kt.txt +++ b/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.fir.kt.txt @@ -1,4 +1,4 @@ -open enum class Test0 : Enum { +enum class Test0 : Enum { private constructor(x: Int) /* primary */ { super/*Enum*/() /* () */ @@ -24,7 +24,7 @@ open enum class Test0 : Enum { } -open enum class Test1 : Enum { +enum class Test1 : Enum { private constructor(x: Int) /* primary */ { super/*Enum*/() /* () */ diff --git a/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.ir.txt b/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.ir.txt index fe0739baa1d..39650a9496e 100644 --- a/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.ir.txt +++ b/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.ir.txt @@ -8,14 +8,14 @@ FILE fqName: fileName:/temporaryInEnumEntryInitializer.kt BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun (): kotlin.Any? declared in ' GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:n type:kotlin.Any? visibility:private [final,static]' type=kotlin.Any? origin=null - CLASS ENUM_CLASS name:En modality:OPEN visibility:public superTypes:[kotlin.Enum<.En>] + CLASS ENUM_CLASS name:En modality:FINAL visibility:public superTypes:[kotlin.Enum<.En>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.En CONSTRUCTOR visibility:private <> (x:kotlin.String?) returnType:.En [primary] VALUE_PARAMETER name:x index:0 type:kotlin.String? BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .En - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:En modality:OPEN visibility:public superTypes:[kotlin.Enum<.En>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:En modality:FINAL visibility:public superTypes:[kotlin.Enum<.En>]' PROPERTY name:x visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.String? visibility:private [final] EXPRESSION_BODY diff --git a/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.kt.txt b/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.kt.txt index b8dc6ba2289..6785e3e41a2 100644 --- a/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.kt.txt +++ b/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.fir.kt.txt @@ -2,7 +2,7 @@ val n: Any? field = null get -open enum class En : Enum { +enum class En : Enum { private constructor(x: String?) /* primary */ { super/*Enum*/() /* () */ @@ -29,3 +29,4 @@ open enum class En : Enum { get(): EnumEntries /* Synthetic body for ENUM_ENTRIES */ } + diff --git a/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.ir.txt b/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.ir.txt index f2a1d4ba9d1..ae740d6241f 100644 --- a/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.ir.txt +++ b/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.ir.txt @@ -38,7 +38,7 @@ FILE fqName: fileName:/lambdaInEnumEntryConstructorCall.kt overridden: public open fun toString (): kotlin.String declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any - CLASS ENUM_CLASS name:ConfigurationParameter modality:OPEN visibility:public superTypes:[kotlin.Enum<.ConfigurationParameter>] + CLASS ENUM_CLASS name:ConfigurationParameter modality:FINAL visibility:public superTypes:[kotlin.Enum<.ConfigurationParameter>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.ConfigurationParameter ENUM_ENTRY name:BASE_URL init: EXPRESSION_BODY @@ -65,7 +65,7 @@ FILE fqName: fileName:/lambdaInEnumEntryConstructorCall.kt BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .ConfigurationParameter - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:ConfigurationParameter modality:OPEN visibility:public superTypes:[kotlin.Enum<.ConfigurationParameter>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:ConfigurationParameter modality:FINAL visibility:public superTypes:[kotlin.Enum<.ConfigurationParameter>]' FUN ENUM_CLASS_SPECIAL_MEMBER name:values visibility:public modality:FINAL <> () returnType:kotlin.Array<.ConfigurationParameter> SYNTHETIC_BODY kind=ENUM_VALUES FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:.ConfigurationParameter diff --git a/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.kt.txt b/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.kt.txt index d3f58a9e6d1..374ed665423 100644 --- a/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.kt.txt +++ b/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.fir.kt.txt @@ -12,7 +12,7 @@ class Wrapper { } -open enum class ConfigurationParameter : Enum { +enum class ConfigurationParameter : Enum { BASE_URL = ConfigurationParameter(apply = local fun (value: String, nc: Wrapper) { println(message = "Base url updated from config parameters ".plus(other = nc.()).plus(other = " -> ").plus(other = value)) nc.( = value) diff --git a/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.ir.txt b/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.ir.txt index 8544ffecbee..d787401fbde 100644 --- a/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.ir.txt +++ b/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.ir.txt @@ -1,5 +1,5 @@ FILE fqName: fileName:/thisInEnumConstructor.kt - CLASS ENUM_CLASS name:EE modality:OPEN visibility:public superTypes:[kotlin.Enum<.EE>] + CLASS ENUM_CLASS name:EE modality:FINAL visibility:public superTypes:[kotlin.Enum<.EE>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.EE CONSTRUCTOR visibility:private <> (myName:kotlin.String) returnType:.EE [primary] VALUE_PARAMETER name:myName index:0 type:kotlin.String @@ -10,7 +10,7 @@ FILE fqName: fileName:/thisInEnumConstructor.kt BLOCK_BODY ENUM_CONSTRUCTOR_CALL 'public constructor (name: kotlin.String, ordinal: kotlin.Int) [primary] declared in kotlin.Enum' : .EE - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:EE modality:OPEN visibility:public superTypes:[kotlin.Enum<.EE>]' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_CLASS name:EE modality:FINAL visibility:public superTypes:[kotlin.Enum<.EE>]' PROPERTY name:myName visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:myName type:kotlin.String visibility:private [final] EXPRESSION_BODY diff --git a/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.kt.txt b/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.kt.txt index 67642f4afb5..4ca6b1fb93f 100644 --- a/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.kt.txt +++ b/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.fir.kt.txt @@ -1,4 +1,4 @@ -open enum class EE : Enum { +enum class EE : Enum { private constructor(myName: String = Companion.toString().lowercase()) /* primary */ { super/*Enum*/() /* () */