Make enum entry classes have private visibility and properties have public vibility

Tests for backend are broken
This commit is contained in:
Pavel V. Talanov
2012-11-16 18:52:34 +04:00
parent 9c7cb64a30
commit c42380dc0b
9 changed files with 44 additions and 27 deletions
@@ -50,8 +50,7 @@ import static org.jetbrains.jet.lang.diagnostics.Errors.*;
import static org.jetbrains.jet.lang.resolve.BindingContext.CONSTRUCTOR;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getDefaultConstructorVisibility;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getExpectedThisObjectIfNeeded;
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.resolveModalityFromModifiers;
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.resolveVisibilityFromModifiers;
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.*;
import static org.jetbrains.jet.lexer.JetTokens.OVERRIDE_KEYWORD;
/**
@@ -116,7 +115,7 @@ public class DescriptorResolver {
descriptor.setTypeParameterDescriptors(typeParameters);
Modality defaultModality = descriptor.getKind() == ClassKind.TRAIT ? Modality.ABSTRACT : Modality.FINAL;
descriptor.setModality(resolveModalityFromModifiers(classElement, defaultModality));
descriptor.setVisibility(resolveVisibilityFromModifiers(classElement));
descriptor.setVisibility(resolveVisibilityFromModifiers(classElement, getDefaultClassVisibility(descriptor)));
trace.record(BindingContext.CLASS, classElement, descriptor);
}
@@ -804,7 +803,7 @@ public class DescriptorResolver {
containingDeclaration,
annotationResolver.getResolvedAnnotations(modifierList, trace),
Modality.FINAL,
resolveVisibilityFromModifiers(objectDeclaration),
resolveVisibilityFromModifiers(objectDeclaration, getDefaultVisibilityForObjectPropertyDescriptor(classDescriptor)),
false,
JetPsiUtil.safeName(objectDeclaration.getName()),
CallableMemberDescriptor.Kind.DECLARATION
@@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.psi.JetModifierList;
import org.jetbrains.jet.lang.psi.JetModifierListOwner;
import org.jetbrains.jet.lexer.JetKeywordToken;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
import java.util.Collection;
import java.util.Map;
@@ -195,4 +194,21 @@ public class ModifiersChecker {
if (modifierList.hasModifier(INTERNAL_KEYWORD)) return Visibilities.INTERNAL;
return defaultVisibility;
}
@NotNull
public static Visibility getDefaultClassVisibility(@NotNull ClassDescriptor descriptor) {
ClassKind kind = descriptor.getKind();
if (kind == ClassKind.ENUM_ENTRY) {
return Visibilities.PRIVATE;
}
return Visibilities.INTERNAL;
}
@NotNull
public static Visibility getDefaultVisibilityForObjectPropertyDescriptor(@NotNull ClassDescriptor objectClassDescriptor) {
if (objectClassDescriptor.getKind() == ClassKind.ENUM_ENTRY) {
return Visibilities.PUBLIC;
}
return Visibilities.INTERNAL;
}
}
@@ -26,7 +26,10 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.lazy.data.FilteringClassLikeInfo;
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassInfoUtil;
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo;
@@ -40,8 +43,7 @@ import org.jetbrains.jet.lang.types.TypeUtils;
import java.util.*;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassObjectName;
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.resolveModalityFromModifiers;
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.resolveVisibilityFromModifiers;
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.*;
/**
* @author abreslav
@@ -113,7 +115,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc
this.modality = resolveModalityFromModifiers(modifierList, defaultModality);
}
JetModifierList modifierList = classLikeInfo.getModifierList();
this.visibility = resolveVisibilityFromModifiers(modifierList, Visibilities.INTERNAL);
this.visibility = resolveVisibilityFromModifiers(modifierList, getDefaultClassVisibility(this));
}
@Override
@@ -6,14 +6,14 @@ internal final enum class test.Test : jet.Enum<test.Test> {
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
internal final class object test.Test.<class-object-for-Test> {
private final /*constructor*/ fun <init>(): test.Test.<class-object-for-Test>
internal final val A: test.Test.<class-object-for-Test>.A
internal final val B: test.Test.<class-object-for-Test>.B
internal final enum entry test.Test.<class-object-for-Test>.A : test.Test {
public final val A: test.Test.<class-object-for-Test>.A
public final val B: test.Test.<class-object-for-Test>.B
private final enum entry test.Test.<class-object-for-Test>.A : test.Test {
private final /*constructor*/ fun <init>(): test.Test.<class-object-for-Test>.A
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
}
internal final enum entry test.Test.<class-object-for-Test>.B : test.Test {
private final enum entry test.Test.<class-object-for-Test>.B : test.Test {
private final /*constructor*/ fun <init>(): test.Test.<class-object-for-Test>.B
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
@@ -6,8 +6,8 @@ internal final enum class test.In : jet.Enum<test.In> {
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
internal final class object test.In.<class-object-for-In> {
private final /*constructor*/ fun <init>(): test.In.<class-object-for-In>
internal final val A: test.In.<class-object-for-In>.A
internal final enum entry test.In.<class-object-for-In>.A : test.In {
public final val A: test.In.<class-object-for-In>.A
private final enum entry test.In.<class-object-for-In>.A : test.In {
private final /*constructor*/ fun <init>(): test.In.<class-object-for-In>.A
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
@@ -22,8 +22,8 @@ private final enum class test.Pr : jet.Enum<test.Pr> {
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
private final class object test.Pr.<class-object-for-Pr> {
private final /*constructor*/ fun <init>(): test.Pr.<class-object-for-Pr>
internal final val A: test.Pr.<class-object-for-Pr>.A
internal final enum entry test.Pr.<class-object-for-Pr>.A : test.Pr {
public final val A: test.Pr.<class-object-for-Pr>.A
private final enum entry test.Pr.<class-object-for-Pr>.A : test.Pr {
private final /*constructor*/ fun <init>(): test.Pr.<class-object-for-Pr>.A
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
@@ -38,8 +38,8 @@ public final enum class test.Pu : jet.Enum<test.Pu> {
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
public final class object test.Pu.<class-object-for-Pu> {
private final /*constructor*/ fun <init>(): test.Pu.<class-object-for-Pu>
internal final val A: test.Pu.<class-object-for-Pu>.A
internal final enum entry test.Pu.<class-object-for-Pu>.A : test.Pu {
public final val A: test.Pu.<class-object-for-Pu>.A
private final enum entry test.Pu.<class-object-for-Pu>.A : test.Pu {
private final /*constructor*/ fun <init>(): test.Pu.<class-object-for-Pu>.A
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
@@ -10,8 +10,8 @@ internal final class test.A : jet.Any {
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
internal final class object test.A.<class-object-for-A>.E.<class-object-for-E> {
private final /*constructor*/ fun <init>(): test.A.<class-object-for-A>.E.<class-object-for-E>
internal final val ENTRY: test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
internal final enum entry test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY : test.A.<class-object-for-A>.E {
public final val ENTRY: test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
private final enum entry test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY : test.A.<class-object-for-A>.E {
private final /*constructor*/ fun <init>(): test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
@@ -10,8 +10,8 @@ internal final class test.A : jet.Any {
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
internal final class object test.A.<class-object-for-A>.E.<class-object-for-E> {
private final /*constructor*/ fun <init>(): test.A.<class-object-for-A>.E.<class-object-for-E>
internal final val ENTRY: test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
internal final enum entry test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY : test.A.<class-object-for-A>.E {
public final val ENTRY: test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
private final enum entry test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY : test.A.<class-object-for-A>.E {
private final /*constructor*/ fun <init>(): test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
@@ -6,8 +6,8 @@ internal final enum class test.MyEnum : jet.Enum<test.MyEnum> {
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
internal final class object test.MyEnum.<class-object-for-MyEnum> {
private final /*constructor*/ fun <init>(): test.MyEnum.<class-object-for-MyEnum>
internal final val ENTRY: test.MyEnum.<class-object-for-MyEnum>.ENTRY
internal final enum entry test.MyEnum.<class-object-for-MyEnum>.ENTRY : test.MyEnum {
public final val ENTRY: test.MyEnum.<class-object-for-MyEnum>.ENTRY
private final enum entry test.MyEnum.<class-object-for-MyEnum>.ENTRY : test.MyEnum {
private final /*constructor*/ fun <init>(): test.MyEnum.<class-object-for-MyEnum>.ENTRY
public final override /*1*/ /*fake_override*/ fun name(): jet.String
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
+2 -2
View File
@@ -7,5 +7,5 @@ private enum class TheEnum(val rgb : Int) {
//package rendererTest defined in root package
//private final enum class TheEnum : jet.Enum<rendererTest.TheEnum> defined in rendererTest
//value-parameter val rgb : jet.Int defined in rendererTest.TheEnum.<init>
//internal final class VAL1 : rendererTest.TheEnum defined in rendererTest.TheEnum.<class-object-for-TheEnum>
//internal final val VAL1 : rendererTest.TheEnum.<class-object-for-TheEnum>.VAL1 defined in rendererTest.TheEnum.<class-object-for-TheEnum>
//private final class VAL1 : rendererTest.TheEnum defined in rendererTest.TheEnum.<class-object-for-TheEnum>
//public final val VAL1 : rendererTest.TheEnum.<class-object-for-TheEnum>.VAL1 defined in rendererTest.TheEnum.<class-object-for-TheEnum>