Inner Java Enums
KT-2691 Fixed KT-2686 Fixed
This commit is contained in:
@@ -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
|
||||
|
||||
+7
-6
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user