diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt index bd036f7e545..fb19e4c7287 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt @@ -206,6 +206,7 @@ public class DefaultParameterValueSubstitutor(val state: GenerationState) { private fun isEmptyConstructorNeeded(constructorDescriptor: ConstructorDescriptor, classOrObject: JetClassOrObject): Boolean { val classDescriptor = constructorDescriptor.getContainingDeclaration() + if (classDescriptor.getKind() != ClassKind.CLASS) return false if (classOrObject.isLocal()) return false diff --git a/compiler/testData/codegen/box/enum/publicConstructorWithDefault.kt b/compiler/testData/codegen/box/enum/publicConstructorWithDefault.kt new file mode 100644 index 00000000000..be8a43b12b5 --- /dev/null +++ b/compiler/testData/codegen/box/enum/publicConstructorWithDefault.kt @@ -0,0 +1,9 @@ +// KT-8438 org.jetbrains.org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 4: Cannot pop operand off an empty stack + +enum class E public constructor(x: String = "OK") { + ENTRY(); + + val result = x +} + +fun box(): String = E.ENTRY.result diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java index fe9d48e3f7d..875ede44b80 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -3475,6 +3475,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("publicConstructorWithDefault.kt") + public void testPublicConstructorWithDefault() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/publicConstructorWithDefault.kt"); + doTest(fileName); + } + @TestMetadata("simple.kt") public void testSimple() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/simple.kt");