Make enum entry classes have private visibility and properties have public vibility
Tests for backend are broken
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user