From 4db732c11bb2865be8daed2101c87ddf095b4599 Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Tue, 23 Oct 2012 19:23:16 +0400 Subject: [PATCH] KT-2948 Assertion fails on a local enum #KT-2948 Fixed --- .../lang/descriptors/MutableClassDescriptorLite.java | 5 ++++- compiler/testData/codegen/enum/inFunction.kt | 11 +++++++++++ .../tests/org/jetbrains/jet/codegen/EnumGenTest.java | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/enum/inFunction.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java index da643a50d59..e05248eeef5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java @@ -91,13 +91,16 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { } private static boolean isStatic(ClassDescriptor declarationClassDescriptor) { + if (declarationClassDescriptor.getKind() == ClassKind.ENUM_CLASS) { + return true; + } DeclarationDescriptor containingDescriptor = declarationClassDescriptor.getContainingDeclaration(); if (containingDescriptor instanceof NamespaceDescriptor) { return true; } else if (containingDescriptor instanceof ClassDescriptor) { ClassDescriptor containingClassDescriptor = (ClassDescriptor) containingDescriptor; - return containingClassDescriptor.getKind().isObject() || declarationClassDescriptor.getKind() == ClassKind.ENUM_CLASS; + return containingClassDescriptor.getKind().isObject(); } else { return false; diff --git a/compiler/testData/codegen/enum/inFunction.kt b/compiler/testData/codegen/enum/inFunction.kt new file mode 100644 index 00000000000..bcf9ae88113 --- /dev/null +++ b/compiler/testData/codegen/enum/inFunction.kt @@ -0,0 +1,11 @@ +// KT-2948 Assertion fails on a local enum + +fun foo(): String { + enum class E { + OK + } + + return E.OK.toString() +} + +fun box(): String = foo() \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java index aef8740d74f..3c44528a5ee 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java @@ -164,6 +164,10 @@ public class EnumGenTest extends CodegenTestCase { blackBoxFile("enum/inner.kt"); } + public void testInFunction() { + blackBoxFile("enum/inFunction.kt"); + } + public void testInnerWithExistingClassObject() { blackBoxFile("enum/innerWithExistingClassObject.kt"); }