Change enum entry resolution strategy in JDR
Enum entry is now resolved into a class with a class object, which inherits from the former class, as in the other parts of the compiler. Create a special class EnumEntrySyntheticClassDescriptor which will be reused in deserialization later
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package test;
|
||||
|
||||
public enum EnumMembers {
|
||||
FIRST(true),
|
||||
SECOND(false);
|
||||
|
||||
public final boolean isFirst;
|
||||
|
||||
private EnumMembers(boolean isFirst) {
|
||||
this.isFirst = isFirst;
|
||||
}
|
||||
|
||||
public boolean first() {
|
||||
return isFirst;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package test
|
||||
|
||||
public final enum class EnumMembers : jet.Enum<test.EnumMembers> {
|
||||
private constructor EnumMembers(/*0*/ p0: jet.Boolean)
|
||||
public final val isFirst: jet.Boolean
|
||||
public open fun first(): jet.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-EnumMembers> {
|
||||
private constructor <class-object-for-EnumMembers>()
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: jet.String): test.EnumMembers
|
||||
public final /*synthesized*/ fun values(): jet.Array<test.EnumMembers>
|
||||
|
||||
public enum entry FIRST : test.EnumMembers {
|
||||
private constructor FIRST()
|
||||
public final override /*1*/ /*fake_override*/ val isFirst: jet.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun first(): jet.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-FIRST> : test.EnumMembers.FIRST {
|
||||
private constructor <class-object-for-FIRST>()
|
||||
public final override /*1*/ /*fake_override*/ val isFirst: jet.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun first(): jet.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
|
||||
public enum entry SECOND : test.EnumMembers {
|
||||
private constructor SECOND()
|
||||
public final override /*1*/ /*fake_override*/ val isFirst: jet.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun first(): jet.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-SECOND> : test.EnumMembers.SECOND {
|
||||
private constructor <class-object-for-SECOND>()
|
||||
public final override /*1*/ /*fake_override*/ val isFirst: jet.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun first(): jet.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package test;
|
||||
|
||||
//TODO: move to LoadJavaTestGenerated when possible
|
||||
public enum JavaEnum {
|
||||
ENTRY,
|
||||
ANOTHER;
|
||||
|
||||
@@ -7,9 +7,31 @@ public final enum class JavaEnum : jet.Enum<test.JavaEnum> {
|
||||
|
||||
public class object <class-object-for-JavaEnum> {
|
||||
private constructor <class-object-for-JavaEnum>()
|
||||
public final val ANOTHER: test.JavaEnum
|
||||
public final val ENTRY: test.JavaEnum
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: jet.String): test.JavaEnum
|
||||
public final /*synthesized*/ fun values(): jet.Array<test.JavaEnum>
|
||||
|
||||
public enum entry ANOTHER : test.JavaEnum {
|
||||
private constructor ANOTHER()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-ANOTHER> : test.JavaEnum.ANOTHER {
|
||||
private constructor <class-object-for-ANOTHER>()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
|
||||
public enum entry ENTRY : test.JavaEnum {
|
||||
private constructor ENTRY()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-ENTRY> : test.JavaEnum.ENTRY {
|
||||
private constructor <class-object-for-ENTRY>()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,20 @@ public trait CustomAnnotation : java.lang.Object {
|
||||
|
||||
public class object <class-object-for-MyEnum> {
|
||||
private constructor <class-object-for-MyEnum>()
|
||||
public final val ONE: test.CustomAnnotation.MyEnum
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: jet.String): test.CustomAnnotation.MyEnum
|
||||
public final /*synthesized*/ fun values(): jet.Array<test.CustomAnnotation.MyEnum>
|
||||
|
||||
public enum entry ONE : test.CustomAnnotation.MyEnum {
|
||||
private constructor ONE()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-ONE> : test.CustomAnnotation.MyEnum.ONE {
|
||||
private constructor <class-object-for-ONE>()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,11 +7,44 @@ public final enum class Enum : jet.Enum<test.Enum> {
|
||||
|
||||
public class object <class-object-for-Enum> {
|
||||
private constructor <class-object-for-Enum>()
|
||||
public final val A: test.Enum
|
||||
public final val B: test.Enum
|
||||
public final val C: test.Enum
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: jet.String): test.Enum
|
||||
public final /*synthesized*/ fun values(): jet.Array<test.Enum>
|
||||
|
||||
public enum entry A : test.Enum {
|
||||
private constructor A()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-A> : test.Enum.A {
|
||||
private constructor <class-object-for-A>()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
|
||||
public enum entry B : test.Enum {
|
||||
private constructor B()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-B> : test.Enum.B {
|
||||
private constructor <class-object-for-B>()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
|
||||
public enum entry C : test.Enum {
|
||||
private constructor C()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-C> : test.Enum.C {
|
||||
private constructor <class-object-for-C>()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public open inner class Inner : java.lang.Object {
|
||||
|
||||
@@ -7,9 +7,20 @@ public final enum class StaticMembersInEnum : jet.Enum<test.StaticMembersInEnum>
|
||||
|
||||
public class object <class-object-for-StaticMembersInEnum> {
|
||||
private constructor <class-object-for-StaticMembersInEnum>()
|
||||
public final val ENTRY: test.StaticMembersInEnum
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: jet.String): test.StaticMembersInEnum
|
||||
public final /*synthesized*/ fun values(): jet.Array<test.StaticMembersInEnum>
|
||||
|
||||
public enum entry ENTRY : test.StaticMembersInEnum {
|
||||
private constructor ENTRY()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
|
||||
public class object <class-object-for-ENTRY> : test.StaticMembersInEnum.ENTRY {
|
||||
private constructor <class-object-for-ENTRY>()
|
||||
public final override /*1*/ /*fake_override*/ fun name(): jet.String
|
||||
public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user