Enum classes have private constructor visibility from front-end point of view.

Protected visibility hardcoded in jvm backend.
This commit is contained in:
Pavel V. Talanov
2012-08-29 15:18:06 +04:00
parent 544be17c3d
commit d831f164cc
7 changed files with 17 additions and 13 deletions
@@ -1023,9 +1023,15 @@ public class JetTypeMapper {
ClassKind kind = ((ClassDescriptor) containingDeclaration).getKind();
if (kind == ClassKind.OBJECT) {
return ACC_PUBLIC;
} else if (kind == ClassKind.ENUM_ENTRY) {
}
else if (kind == ClassKind.ENUM_ENTRY) {
return ACC_PACKAGE_PRIVATE;
}
else if (kind == ClassKind.ENUM_CLASS) {
//TODO: should be ACC_PRIVATE
// see http://youtrack.jetbrains.com/issue/KT-2680
return ACC_PROTECTED;
}
}
if (containingDeclaration instanceof NamespaceDescriptor) {
return ACC_PUBLIC;
@@ -368,9 +368,7 @@ public class DescriptorUtils {
public static Visibility getDefaultConstructorVisibility(@NotNull ClassDescriptor classDescriptor) {
ClassKind classKind = classDescriptor.getKind();
if (classKind == ClassKind.ENUM_CLASS) {
//TODO: should be PRIVATE
// see http://youtrack.jetbrains.com/issue/KT-2680
return Visibilities.PROTECTED;
return Visibilities.PRIVATE;
}
if (classKind.isObject()) {
return Visibilities.PRIVATE;
@@ -1,7 +1,7 @@
namespace test
internal final enum class test.Test : jet.Enum<test.Test> {
protected final /*constructor*/ fun <init>(/*0*/ a: jet.Int): test.Test
private final /*constructor*/ fun <init>(/*0*/ a: jet.Int): test.Test
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
internal final class object test.Test.<class-object-for-Test> {
@@ -1,7 +1,7 @@
namespace test
internal final enum class test.In : jet.Enum<test.In> {
protected final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.In
private final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.In
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
internal final class object test.In.<class-object-for-In> {
@@ -12,7 +12,7 @@ internal final enum class test.In : jet.Enum<test.In> {
}
}
private final enum class test.Pr : jet.Enum<test.Pr> {
protected final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.Pr
private final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.Pr
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
private final class object test.Pr.<class-object-for-Pr> {
@@ -23,7 +23,7 @@ private final enum class test.Pr : jet.Enum<test.Pr> {
}
}
public final enum class test.Pu : jet.Enum<test.Pu> {
protected final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.Pu
private final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.Pu
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
public final class object test.Pu.<class-object-for-Pu> {
@@ -1,7 +1,7 @@
namespace test
internal final enum class test.In : jet.Enum<test.In> {
protected final /*constructor*/ fun <init>(): test.In
private final /*constructor*/ fun <init>(): test.In
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
internal final class object test.In.<class-object-for-In> {
@@ -17,7 +17,7 @@ internal final enum class test.In : jet.Enum<test.In> {
}
}
private final enum class test.Pr : jet.Enum<test.Pr> {
protected final /*constructor*/ fun <init>(): test.Pr
private final /*constructor*/ fun <init>(): test.Pr
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
private final class object test.Pr.<class-object-for-Pr> {
@@ -33,7 +33,7 @@ private final enum class test.Pr : jet.Enum<test.Pr> {
}
}
public final enum class test.Pu : jet.Enum<test.Pu> {
protected final /*constructor*/ fun <init>(): test.Pu
private final /*constructor*/ fun <init>(): test.Pu
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
public final class object test.Pu.<class-object-for-Pu> {
@@ -1,7 +1,7 @@
namespace test
internal final enum class test.MyEnum : jet.Enum<test.MyEnum> {
protected final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.MyEnum
private final /*constructor*/ fun <init>(/*0*/ p0: jet.String?, /*1*/ p1: jet.Int): test.MyEnum
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
internal final class object test.MyEnum.<class-object-for-MyEnum> {
@@ -1,7 +1,7 @@
namespace test
internal final enum class test.MyEnum : jet.Enum<test.MyEnum> {
protected final /*constructor*/ fun <init>(): test.MyEnum
private final /*constructor*/ fun <init>(): test.MyEnum
public final override /*1*/ fun name(): jet.String
public final override /*1*/ fun ordinal(): jet.Int
internal final class object test.MyEnum.<class-object-for-MyEnum> {