From 0c9da6d7151393e5fb74eaf631bb8e494d477da6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 4 Mar 2020 16:01:36 +0300 Subject: [PATCH] FIR2IR: extract 'enumClassModality' --- .../fir/backend/Fir2IrDeclarationStorage.kt | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index e9070d63d95..14a07b45b16 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -236,6 +236,20 @@ class Fir2IrDeclarationStorage( } } + private fun FirRegularClass.enumClassModality(): Modality { + return when { + declarations.any { it is FirCallableMemberDeclaration<*> && it.modality == Modality.ABSTRACT } -> { + Modality.ABSTRACT + } + declarations.any { it is FirEnumEntry && it.initializer != null } -> { + Modality.OPEN + } + else -> { + Modality.FINAL + } + } + } + private fun createIrClass(klass: FirClass<*>): IrClass { // NB: klass can be either FirRegularClass or FirAnonymousObject if (klass is FirAnonymousObject) { @@ -247,17 +261,7 @@ class Fir2IrDeclarationStorage( val origin = IrDeclarationOrigin.DEFINED val visibility = regularClass.visibility val modality = if (regularClass.classKind == ClassKind.ENUM_CLASS) { - when { - regularClass.declarations.any { it is FirCallableMemberDeclaration<*> && it.modality == Modality.ABSTRACT } -> { - Modality.ABSTRACT - } - regularClass.declarations.any { it is FirEnumEntry && it.initializer != null } -> { - Modality.OPEN - } - else -> { - Modality.FINAL - } - } + regularClass.enumClassModality() } else { regularClass.modality ?: Modality.FINAL }