diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt index 1192a65723e..1c238773992 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt @@ -271,6 +271,7 @@ internal class EnumClassLowering(val context: Context) : ClassLoweringPass { val loweredArgument = loweredEnumConstructor.valueParameters[argument.loweredIndex()] val body = irConstructor.getDefault(loweredArgument)!!.deepCopyWithVariables() body.transformChildrenVoid(ParameterMapper(constructor)) + body.accept(SetDeclarationsParentVisitor, irConstructor) constructor.putDefault(constructorDescriptor.valueParameters[loweredArgument.index], body) } } diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 5faa49e3afc..29648ca13dd 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -774,6 +774,11 @@ task switchLowering(type: RunKonanTest) { source = "codegen/enum/switchLowering.kt" } +task enum_lambdaInDefault(type: RunKonanTest) { + goldValue = "Q\n" + source = "codegen/enum/lambdaInDefault.kt" +} + task mangling(type: LinkKonanTest) { goldValue = "Int direct [1, 2, 3, 4]\n" + diff --git a/backend.native/tests/codegen/enum/lambdaInDefault.kt b/backend.native/tests/codegen/enum/lambdaInDefault.kt new file mode 100644 index 00000000000..0761eed80ea --- /dev/null +++ b/backend.native/tests/codegen/enum/lambdaInDefault.kt @@ -0,0 +1,13 @@ +package codegen.enum.lambdaInDefault + +import kotlin.test.* + +enum class Zzz(val value: String.() -> Int = { + length +}) { + Q() +} + +@Test fun runTest() { + println(Zzz.Q) +} \ No newline at end of file