diff --git a/compiler/android-tests/tests/org/jetbrains/jet/compiler/android/SpecialFiles.java b/compiler/android-tests/tests/org/jetbrains/jet/compiler/android/SpecialFiles.java index 6a83ad4d7cb..84b3c397907 100644 --- a/compiler/android-tests/tests/org/jetbrains/jet/compiler/android/SpecialFiles.java +++ b/compiler/android-tests/tests/org/jetbrains/jet/compiler/android/SpecialFiles.java @@ -79,6 +79,7 @@ public class SpecialFiles { private static void fillExcludedFiles() { excludedFiles.add("kt2781.kt"); // Must compile Java files before + excludedFiles.add("simpleJavaInnerEnum.kt"); // Must compile Java files before excludedFiles.add("referencesStaticInnerClassMethod.kt"); // Must compile Java files before excludedFiles.add("referencesStaticInnerClassMethodL2.kt"); // Must compile Java files before excludedFiles.add("simpleJavaEnum.kt"); // Must compile Java files before 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 513e99235bb..01dab6767eb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java @@ -101,13 +101,14 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase return this; } - private static boolean isStatic(DeclarationDescriptor declarationDescriptor) { - if (declarationDescriptor instanceof NamespaceDescriptor) { + private static boolean isStatic(ClassDescriptor declarationClassDescriptor) { + DeclarationDescriptor containingDescriptor = declarationClassDescriptor.getContainingDeclaration(); + if (containingDescriptor instanceof NamespaceDescriptor) { return true; } - else if (declarationDescriptor instanceof ClassDescriptor) { - ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor; - return classDescriptor.getKind().isObject() || classDescriptor.getKind() == ClassKind.ENUM_CLASS; + else if (containingDescriptor instanceof ClassDescriptor) { + ClassDescriptor containingClassDescriptor = (ClassDescriptor) containingDescriptor; + return containingClassDescriptor.getKind().isObject() || declarationClassDescriptor.getKind() == ClassKind.ENUM_CLASS; } else { return false; @@ -303,7 +304,7 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase return ClassObjectStatus.DUPLICATE; } - if (!isStatic(MutableClassDescriptorLite.this.getContainingDeclaration())) { + if (!isStatic(MutableClassDescriptorLite.this)) { return ClassObjectStatus.NOT_ALLOWED; } diff --git a/compiler/testData/codegen/enum/simpleJavaInnerEnum.java b/compiler/testData/codegen/enum/simpleJavaInnerEnum.java new file mode 100644 index 00000000000..6d3110e0e55 --- /dev/null +++ b/compiler/testData/codegen/enum/simpleJavaInnerEnum.java @@ -0,0 +1,7 @@ +package test; + +public class simpleJavaInnerEnum { + public enum MyEnum { + A; + } +} \ No newline at end of file diff --git a/compiler/testData/codegen/enum/simpleJavaInnerEnum.kt b/compiler/testData/codegen/enum/simpleJavaInnerEnum.kt new file mode 100644 index 00000000000..d667687f936 --- /dev/null +++ b/compiler/testData/codegen/enum/simpleJavaInnerEnum.kt @@ -0,0 +1,6 @@ +import test.* +import test.simpleJavaInnerEnum.MyEnum.A + +fun box() = + if (simpleJavaInnerEnum.MyEnum.A.toString() == "A" && A.toString() == "A") "OK" + else "fail" diff --git a/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java index 028ab6e4fc4..aef8740d74f 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/EnumGenTest.java @@ -109,6 +109,10 @@ public class EnumGenTest extends CodegenTestCase { public void testSimpleJavaEnum() throws Exception { blackBoxFileWithJava("enum/simpleJavaEnum.kt"); } + + public void testSimpleJavaInnerEnum() throws Exception { + blackBoxFileWithJava("enum/simpleJavaInnerEnum.kt"); + } public void testSimpleJavaEnumWithStaticImport() throws Exception { blackBoxFileWithJava("enum/simpleJavaEnumWithStaticImport.kt");