From 42bf62f87082fa03535e9af9764afa3ffdd5ef37 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 30 Aug 2012 15:23:38 +0400 Subject: [PATCH] KT-2704 Remove support for enum-entry constructor generation in the front-end code #KT-2704 Fixed --- .../jet/codegen/ImplementationBodyCodegen.java | 2 +- .../jet/lang/resolve/DeclarationResolver.java | 16 +++++++--------- .../jet/lang/resolve/DescriptorResolver.java | 2 +- .../lang/resolve/TypeHierarchyResolver.java | 18 +----------------- .../resolve/lazy/AbstractLazyMemberScope.java | 11 ++--------- 5 files changed, 12 insertions(+), 37 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 2967cae62cb..50fe88f068a 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -1047,7 +1047,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { if (declaration instanceof JetClassObject) { // done earlier in order to have accessors } - else if (declaration instanceof JetEnumEntry && !((JetEnumEntry) declaration).hasPrimaryConstructor()) { + else if (declaration instanceof JetEnumEntry) { String name = declaration.getName(); final String desc = "L" + typeMapper.mapType(descriptor.getDefaultType(), JetTypeMapperMode.IMPL).getInternalName() + ";"; v.newField(declaration, ACC_PUBLIC | ACC_ENUM | ACC_STATIC | ACC_FINAL, name, desc, null, null); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java index 0e9c5e2b204..a234f58bfee 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java @@ -203,15 +203,13 @@ public class DeclarationResolver { @Override public void visitEnumEntry(JetEnumEntry enumEntry) { - if (enumEntry.getPrimaryConstructorParameterList() == null) { - // FIX: Bad cast - MutableClassDescriptorLite classObjectDescriptor = - ((MutableClassDescriptorLite)namespaceLike.getOwnerForChildren()).getClassObjectDescriptor(); - assert classObjectDescriptor != null; - PropertyDescriptor propertyDescriptor = descriptorResolver.resolveObjectDeclarationAsPropertyDescriptor( - classObjectDescriptor, enumEntry, context.getClasses().get(enumEntry), trace); - classObjectDescriptor.getBuilder().addPropertyDescriptor(propertyDescriptor); - } + // FIX: Bad cast + MutableClassDescriptorLite classObjectDescriptor = + ((MutableClassDescriptorLite)namespaceLike.getOwnerForChildren()).getClassObjectDescriptor(); + assert classObjectDescriptor != null; + PropertyDescriptor propertyDescriptor = descriptorResolver.resolveObjectDeclarationAsPropertyDescriptor( + classObjectDescriptor, enumEntry, context.getClasses().get(enumEntry), trace); + classObjectDescriptor.getBuilder().addPropertyDescriptor(propertyDescriptor); } }); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index f13b0bee0f8..852554f2201 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -1028,7 +1028,7 @@ public class DescriptorResolver { @NotNull JetClass classElement, BindingTrace trace ) { - if (classDescriptor.getKind() == ClassKind.ENUM_ENTRY && !classElement.hasPrimaryConstructor()) return null; + if (classDescriptor.getKind() == ClassKind.ENUM_ENTRY) return null; return createConstructorDescriptor( scope, classDescriptor, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index 6ebc1032b5b..35b925f5e46 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -245,23 +245,7 @@ public class TypeHierarchyResolver { MutableClassDescriptorLite classObjectDescriptor = ownerClassDescriptor.getClassObjectDescriptor(); assert classObjectDescriptor != null : enumEntry.getParent().getText(); - if (enumEntry.getPrimaryConstructorParameterList() == null) { - // Simple enum entry - - createClassDescriptorForEnumEntry(enumEntry, classObjectDescriptor.getBuilder()); - } - else { - // Advanced enum entry like "Cons(val head : T, val tail : List) : List(tail.size + 1)" - MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor( - classObjectDescriptor, outerScope, ClassKind.ENUM_ENTRY, JetPsiUtil.safeName(enumEntry.getName())); - context.getClasses().put(enumEntry, mutableClassDescriptor); - - JetScope classScope = mutableClassDescriptor.getScopeForMemberResolution(); - - prepareForDeferredCall(classScope, mutableClassDescriptor, enumEntry); - - classObjectDescriptor.getBuilder().addObjectDescriptor(mutableClassDescriptor); - } + createClassDescriptorForEnumEntry(enumEntry, classObjectDescriptor.getBuilder()); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyMemberScope.java index 121f983a48a..bed057a384d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyMemberScope.java @@ -70,7 +70,7 @@ public abstract class AbstractLazyMemberScope