From 24b83dd8f7ccac87dc42626062cb2b170b1bc5be Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 15 Aug 2012 13:34:18 +0400 Subject: [PATCH] Getting rid of unneeded parameters + constants introduced --- .../jet/lang/resolve/DescriptorResolver.java | 24 ++++++++++++------- .../lang/resolve/TypeHierarchyResolver.java | 6 ++--- 2 files changed, 18 insertions(+), 12 deletions(-) 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 3ca95df924e..e638f798334 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -54,6 +54,9 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.CONSTRUCTOR; * @author abreslav */ public class DescriptorResolver { + public static final Name VALUE_OF_METHOD_NAME = Name.identifier("valueOf"); + public static final Name VALUES_METHOD_NAME = Name.identifier("values"); + @NotNull private TypeResolver typeResolver; @NotNull @@ -1142,43 +1145,46 @@ public class DescriptorResolver { } public static SimpleFunctionDescriptor createEnumClassObjectValuesMethod( - final ClassDescriptor mutableClassDescriptor, - ClassDescriptor classObjectDescriptor, + final ClassDescriptor enumClassDescriptor, BindingTrace trace ) { + ClassDescriptor classObjectDescriptor = enumClassDescriptor.getClassObjectDescriptor(); + assert classObjectDescriptor != null : "Enum class has no class object"; List annotations = Collections.emptyList(); SimpleFunctionDescriptorImpl values = new SimpleFunctionDescriptorImpl(classObjectDescriptor, annotations, - Name.identifier("values"), + VALUES_METHOD_NAME, CallableMemberDescriptor.Kind.DECLARATION); ClassReceiver classReceiver = new ClassReceiver(classObjectDescriptor); JetType type = DeferredType.create(trace, new LazyValue() { @Override protected JetType compute() { - return JetStandardLibrary.getInstance().getArrayType(mutableClassDescriptor.getDefaultType()); + return JetStandardLibrary.getInstance().getArrayType(enumClassDescriptor.getDefaultType()); } }); - values.initialize(null, classReceiver, Collections.emptyList(),Collections.emptyList(), + values.initialize(null, classReceiver, Collections.emptyList(), + Collections.emptyList(), type, Modality.FINAL, Visibilities.PUBLIC, false); return values; } public static SimpleFunctionDescriptor createEnumClassObjectValueOfMethod( - final ClassDescriptor mutableClassDescriptor, - ClassDescriptor classObjectDescriptor, + final ClassDescriptor enumClassDescriptor, BindingTrace trace ) { + ClassDescriptor classObjectDescriptor = enumClassDescriptor.getClassObjectDescriptor(); + assert classObjectDescriptor != null : "Enum class has no class object"; List annotations = Collections.emptyList(); SimpleFunctionDescriptorImpl values = new SimpleFunctionDescriptorImpl(classObjectDescriptor, annotations, - Name.identifier("valueOf"), + VALUE_OF_METHOD_NAME, CallableMemberDescriptor.Kind.DECLARATION); ClassReceiver classReceiver = new ClassReceiver(classObjectDescriptor); JetType type = DeferredType.create(trace, new LazyValue() { @Override protected JetType compute() { - return mutableClassDescriptor.getDefaultType(); + return enumClassDescriptor.getDefaultType(); } }); ValueParameterDescriptor parameterDescriptor = new ValueParameterDescriptorImpl( 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 43562576806..6e071bb041f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -292,6 +292,7 @@ public class TypeHierarchyResolver { MutableClassDescriptor classObjectDescriptor = new MutableClassDescriptor( mutableClassDescriptor, outerScope, ClassKind.OBJECT, Name.special("")); + mutableClassDescriptor.getBuilder().setClassObjectDescriptor(classObjectDescriptor); classObjectDescriptor.setModality(Modality.FINAL); classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList())); classObjectDescriptor.setTypeParameterDescriptors(new ArrayList(0)); @@ -299,9 +300,8 @@ public class TypeHierarchyResolver { ConstructorDescriptorImpl primaryConstructorForObject = createPrimaryConstructorForObject(null, classObjectDescriptor); primaryConstructorForObject.setReturnType(classObjectDescriptor.getDefaultType()); - classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValuesMethod(mutableClassDescriptor, classObjectDescriptor, trace)); - classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValueOfMethod(mutableClassDescriptor, classObjectDescriptor,trace)); - mutableClassDescriptor.getBuilder().setClassObjectDescriptor(classObjectDescriptor); + classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValuesMethod(mutableClassDescriptor, trace)); + classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValueOfMethod(mutableClassDescriptor, trace)); } }