Change type of enum entry property
Now such properties have types corresponding to enum class not it's own enum entry classes
This commit is contained in:
@@ -808,7 +808,7 @@ public class DescriptorResolver {
|
||||
JetPsiUtil.safeName(objectDeclaration.getName()),
|
||||
CallableMemberDescriptor.Kind.DECLARATION
|
||||
);
|
||||
propertyDescriptor.setType(classDescriptor.getDefaultType(), Collections.<TypeParameterDescriptor>emptyList(),
|
||||
propertyDescriptor.setType(getTypeForObjectDeclaration(classDescriptor), Collections.<TypeParameterDescriptor>emptyList(),
|
||||
getExpectedThisObjectIfNeeded(containingDeclaration), NO_RECEIVER_PARAMETER);
|
||||
propertyDescriptor.initialize(createDefaultGetter(propertyDescriptor), null);
|
||||
trace.record(BindingContext.OBJECT_DECLARATION_CLASS, propertyDescriptor, classDescriptor);
|
||||
@@ -819,6 +819,18 @@ public class DescriptorResolver {
|
||||
return propertyDescriptor;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static JetType getTypeForObjectDeclaration(@NotNull ClassDescriptor objectClassDescriptor) {
|
||||
if (objectClassDescriptor.getKind() == ClassKind.ENUM_ENTRY) {
|
||||
DeclarationDescriptor containingDeclaration = objectClassDescriptor.getContainingDeclaration().getContainingDeclaration();
|
||||
assert containingDeclaration instanceof ClassDescriptor;
|
||||
ClassDescriptor enumClass = (ClassDescriptor) containingDeclaration;
|
||||
assert enumClass.getKind() == ClassKind.ENUM_CLASS;
|
||||
return enumClass.getDefaultType();
|
||||
}
|
||||
return objectClassDescriptor.getDefaultType();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private VariableDescriptor resolveObjectDeclarationAsLocalVariable(
|
||||
@NotNull DeclarationDescriptor containingDeclaration,
|
||||
|
||||
@@ -6,8 +6,8 @@ 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>
|
||||
public final val A: test.Test.<class-object-for-Test>.A
|
||||
public final val B: test.Test.<class-object-for-Test>.B
|
||||
public final val A: test.Test
|
||||
public final val B: test.Test
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@ 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>
|
||||
public final val A: test.In.<class-object-for-In>.A
|
||||
public final val A: test.In
|
||||
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
|
||||
@@ -22,7 +22,7 @@ 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>
|
||||
public final val A: test.Pr.<class-object-for-Pr>.A
|
||||
public final val A: test.Pr
|
||||
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
|
||||
@@ -38,7 +38,7 @@ 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>
|
||||
public final val A: test.Pu.<class-object-for-Pu>.A
|
||||
public final val A: test.Pu
|
||||
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
|
||||
|
||||
@@ -10,7 +10,7 @@ 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>
|
||||
public final val ENTRY: test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
|
||||
public final val ENTRY: test.A.<class-object-for-A>.E
|
||||
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
|
||||
|
||||
@@ -10,7 +10,7 @@ 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>
|
||||
public final val ENTRY: test.A.<class-object-for-A>.E.<class-object-for-E>.ENTRY
|
||||
public final val ENTRY: test.A.<class-object-for-A>.E
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@ 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>
|
||||
public final val ENTRY: test.MyEnum.<class-object-for-MyEnum>.ENTRY
|
||||
public final val ENTRY: test.MyEnum
|
||||
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
|
||||
|
||||
@@ -8,4 +8,4 @@ private enum class TheEnum(val rgb : Int) {
|
||||
//private final enum class TheEnum : jet.Enum<rendererTest.TheEnum> defined in rendererTest
|
||||
//value-parameter val rgb : jet.Int defined in rendererTest.TheEnum.<init>
|
||||
//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>
|
||||
//public final val VAL1 : rendererTest.TheEnum defined in rendererTest.TheEnum.<class-object-for-TheEnum>
|
||||
Reference in New Issue
Block a user