Put enum entries into enum class in JDR
This commit is contained in:
@@ -1642,10 +1642,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
||||
}
|
||||
}
|
||||
|
||||
if (descriptor instanceof VariableDescriptorForObject) {
|
||||
return genObjectClassInstance((VariableDescriptorForObject) descriptor);
|
||||
}
|
||||
|
||||
int index = lookupLocalIndex(descriptor);
|
||||
if (index >= 0) {
|
||||
return stackValueForLocal(descriptor, index);
|
||||
@@ -1731,20 +1727,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
||||
throw new UnsupportedOperationException("don't know how to generate reference " + descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private StackValue genObjectClassInstance(@NotNull VariableDescriptorForObject variableDescriptor) {
|
||||
boolean isEnumEntry = DescriptorUtils.isEnumClassObject(variableDescriptor.getContainingDeclaration());
|
||||
if (isEnumEntry) {
|
||||
ClassDescriptor containing = (ClassDescriptor) variableDescriptor.getContainingDeclaration().getContainingDeclaration();
|
||||
assert containing != null;
|
||||
Type type = typeMapper.mapType(containing);
|
||||
return StackValue.field(type, type, variableDescriptor.getName().asString(), true);
|
||||
}
|
||||
else {
|
||||
return StackValue.singleton(variableDescriptor.getObjectClass(), typeMapper);
|
||||
}
|
||||
}
|
||||
|
||||
private StackValue stackValueForLocal(DeclarationDescriptor descriptor, int index) {
|
||||
if (descriptor instanceof VariableDescriptor) {
|
||||
Type sharedVarType = typeMapper.getSharedVarType(descriptor);
|
||||
|
||||
@@ -279,7 +279,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
if (inner == null || isTopLevelDeclaration(inner)) {
|
||||
break;
|
||||
}
|
||||
if (inner instanceof ClassDescriptor && !isEnumClassObject(inner)) {
|
||||
if (inner instanceof ClassDescriptor) {
|
||||
writeInnerClass((ClassDescriptor) inner);
|
||||
}
|
||||
inner = inner.getContainingDeclaration();
|
||||
|
||||
@@ -303,9 +303,6 @@ public class AnnotationResolver {
|
||||
CallableDescriptor callableDescriptor = resolvedCall.getResultingDescriptor();
|
||||
if (callableDescriptor instanceof PropertyDescriptor) {
|
||||
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) callableDescriptor;
|
||||
if (isEnumProperty(propertyDescriptor)) {
|
||||
return new EnumValue(((VariableDescriptorForObject) propertyDescriptor).getObjectClass());
|
||||
}
|
||||
if (AnnotationUtils.isPropertyAcceptableAsAnnotationParameter(propertyDescriptor)) {
|
||||
return trace.getBindingContext().get(COMPILE_TIME_INITIALIZER, propertyDescriptor);
|
||||
}
|
||||
@@ -366,14 +363,6 @@ public class AnnotationResolver {
|
||||
return expression.accept(visitor, null);
|
||||
}
|
||||
|
||||
private static boolean isEnumProperty(@NotNull PropertyDescriptor descriptor) {
|
||||
// TODO: this is true only for enum entries loaded from Java, refactor JDR to use classes with class objects instead
|
||||
ClassifierDescriptor classifier = descriptor.getType().getConstructor().getDeclarationDescriptor();
|
||||
return classifier != null &&
|
||||
DescriptorUtils.isEnumClass(classifier) &&
|
||||
DescriptorUtils.isEnumClassObject(descriptor.getContainingDeclaration());
|
||||
}
|
||||
|
||||
@SuppressWarnings("MethodMayBeStatic")
|
||||
@NotNull
|
||||
public List<AnnotationDescriptor> getResolvedAnnotations(@NotNull List<JetAnnotationEntry> annotations, @NotNull BindingTrace trace) {
|
||||
|
||||
@@ -11,37 +11,37 @@ public final enum class EnumMembers : jet.Enum<test.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 enum entry FIRST : test.EnumMembers {
|
||||
private constructor FIRST()
|
||||
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 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 enum entry SECOND : test.EnumMembers {
|
||||
private constructor SECOND()
|
||||
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
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,29 +9,29 @@ public final enum class JavaEnum : jet.Enum<test.JavaEnum> {
|
||||
private constructor <class-object-for-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 enum entry ANOTHER : test.JavaEnum {
|
||||
private constructor ANOTHER()
|
||||
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 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 enum entry ENTRY : test.JavaEnum {
|
||||
private constructor ENTRY()
|
||||
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
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,17 +16,17 @@ public trait CustomAnnotation : java.lang.Object {
|
||||
private constructor <class-object-for-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 enum entry ONE : test.CustomAnnotation.MyEnum {
|
||||
private constructor ONE()
|
||||
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
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,41 +9,41 @@ public final enum class Enum : jet.Enum<test.Enum> {
|
||||
private constructor <class-object-for-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 enum entry A : test.Enum {
|
||||
private constructor A()
|
||||
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 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 enum entry B : test.Enum {
|
||||
private constructor B()
|
||||
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 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 enum entry C : test.Enum {
|
||||
private constructor C()
|
||||
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 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,17 +9,17 @@ public final enum class StaticMembersInEnum : jet.Enum<test.StaticMembersInEnum>
|
||||
private constructor <class-object-for-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 enum entry ENTRY : test.StaticMembersInEnum {
|
||||
private constructor ENTRY()
|
||||
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
|
||||
|
||||
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