From 27949bccf63afbf3d5418008de5d7ac9fb229a32 Mon Sep 17 00:00:00 2001 From: Pavel Kunyavskiy Date: Tue, 22 Nov 2022 11:36:53 +0100 Subject: [PATCH] [K/N] Simplify enumsSupport --- .../backend/konan/lower/EnumClassLowering.kt | 42 ++++++------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt index cae0aa619da..9aa961530a2 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.backend.konan.lower -import org.jetbrains.kotlin.backend.common.DefaultDelegateFactory import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.getOrPut import org.jetbrains.kotlin.backend.common.lower.EnumWhenLowering @@ -49,24 +48,6 @@ internal class EnumsSupport( private val enumValueGetters = mapping.enumValueGetters private val enumEntriesMaps = mapping.enumEntriesMaps - private val valuesFunctions = DefaultDelegateFactory.newDeclarationToDeclarationMapping() - private val valueOfFunctions = DefaultDelegateFactory.newDeclarationToDeclarationMapping() - - fun getValuesFunction(enumClass: IrClass) = valuesFunctions.getOrPut(enumClass) { - enumClass.simpleFunctions().single { - it.name == valuesFunctionName && it.dispatchReceiverParameter == null - } - } - fun saveValuesFunction(enumClass: IrClass) { getValuesFunction(enumClass) } - - fun getValueOfFunction(enumClass: IrClass) = valueOfFunctions.getOrPut(enumClass) { - enumClass.simpleFunctions().single { - it.name == valueOfFunctionName && it.dispatchReceiverParameter == null - } - } - fun saveValueOfFunction(enumClass: IrClass) { getValueOfFunction(enumClass) } - - fun enumEntriesMap(enumClass: IrClass): Map { require(enumClass.isEnumClass) { "Expected enum class but was: ${enumClass.render()}" } return enumEntriesMaps.getOrPut(enumClass) { @@ -101,11 +82,6 @@ internal class EnumsSupport( } } } - - companion object { - val valuesFunctionName = Name.identifier("values") - val valueOfFunctionName = Name.identifier("valueOf") - } } internal object DECLARATION_ORIGIN_ENUM : IrDeclarationOriginImpl("ENUM") @@ -154,9 +130,19 @@ internal class EnumUsageLowering(val context: Context) : IrElementTransformer data.irCall(enumsSupport.getValuesFunction(irClass)) - IntrinsicType.ENUM_VALUE_OF -> data.irCall(enumsSupport.getValueOfFunction(irClass)).apply { - putValueArgument(0, expression.getValueArgument(0)!!) + IntrinsicType.ENUM_VALUES -> { + val function = irClass.simpleFunctions().single { + it.name == Name.identifier("values") && it.dispatchReceiverParameter == null + } + data.irCall(function) + } + IntrinsicType.ENUM_VALUE_OF -> { + val function = irClass.simpleFunctions().single { + it.name == Name.identifier("valueOf") && it.dispatchReceiverParameter == null + } + data.irCall(function).apply { + putValueArgument(0, expression.getValueArgument(0)!!) + } } else -> TODO("Unsupported intrinsic type ${intrinsicType}") } @@ -238,8 +224,6 @@ internal class EnumClassLowering(val context: Context) : FileLoweringPass { else -> null } } - enumsSupport.saveValuesFunction(irClass) - enumsSupport.saveValueOfFunction(irClass) irClass.simpleFunctions().forEach { declaration -> val body = declaration.body if (body is IrSyntheticBody) {