Inner Java Enums

KT-2691 Fixed
 KT-2686 Fixed
This commit is contained in:
Natalia.Ukhorskaya
2012-09-24 12:33:58 +04:00
parent bd22a94907
commit 32d707ca9b
5 changed files with 25 additions and 6 deletions
@@ -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
@@ -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;
}
@@ -0,0 +1,7 @@
package test;
public class simpleJavaInnerEnum {
public enum MyEnum {
A;
}
}
@@ -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"
@@ -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");