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:
Alexander Udalov
2013-11-13 20:32:28 +04:00
parent 57678a5506
commit 83ef095093
14 changed files with 482 additions and 118 deletions
@@ -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
}
}
}
}