diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java index 22291f863ac..ec0f0af4d3e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java @@ -205,6 +205,10 @@ public class ClosureCodegen extends MemberCodegen { generateFunctionReferenceMethods(functionReferenceTarget); } + functionCodegen.generateDefaultIfNeeded( + context.intoFunction(funDescriptor), funDescriptor, context.getContextKind(), DefaultParameterValueLoader.DEFAULT, null + ); + this.constructor = generateConstructor(); if (isConst(closure)) { @@ -212,10 +216,6 @@ public class ClosureCodegen extends MemberCodegen { } genClosureFields(closure, v, typeMapper); - - functionCodegen.generateDefaultIfNeeded( - context.intoFunction(funDescriptor), funDescriptor, context.getContextKind(), DefaultParameterValueLoader.DEFAULT, null - ); } @Override diff --git a/compiler/testData/codegen/box/closures/kt5589.kt b/compiler/testData/codegen/box/closures/kt5589.kt new file mode 100644 index 00000000000..3b3a27d91ca --- /dev/null +++ b/compiler/testData/codegen/box/closures/kt5589.kt @@ -0,0 +1,5 @@ +fun box(): String { + val x = "OK" + fun bar(y: String = x): String = y + return bar() +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java index c414ace497d..09252ce51f0 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -1846,6 +1846,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("kt5589.kt") + public void testKt5589() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/closures/kt5589.kt"); + doTest(fileName); + } + @TestMetadata("localClassFunClosure.kt") public void testLocalClassFunClosure() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/closures/localClassFunClosure.kt");