KT-2948 Assertion fails on a local enum

#KT-2948 Fixed
This commit is contained in:
Natalia.Ukhorskaya
2012-10-23 19:23:16 +04:00
parent 91bbd7378e
commit 4db732c11b
3 changed files with 19 additions and 1 deletions
@@ -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;
@@ -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()
@@ -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");
}