Getting rid of unneeded parameters
+ constants introduced
This commit is contained in:
@@ -54,6 +54,9 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.CONSTRUCTOR;
|
|||||||
* @author abreslav
|
* @author abreslav
|
||||||
*/
|
*/
|
||||||
public class DescriptorResolver {
|
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
|
@NotNull
|
||||||
private TypeResolver typeResolver;
|
private TypeResolver typeResolver;
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -1142,43 +1145,46 @@ public class DescriptorResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static SimpleFunctionDescriptor createEnumClassObjectValuesMethod(
|
public static SimpleFunctionDescriptor createEnumClassObjectValuesMethod(
|
||||||
final ClassDescriptor mutableClassDescriptor,
|
final ClassDescriptor enumClassDescriptor,
|
||||||
ClassDescriptor classObjectDescriptor,
|
|
||||||
BindingTrace trace
|
BindingTrace trace
|
||||||
) {
|
) {
|
||||||
|
ClassDescriptor classObjectDescriptor = enumClassDescriptor.getClassObjectDescriptor();
|
||||||
|
assert classObjectDescriptor != null : "Enum class has no class object";
|
||||||
List<AnnotationDescriptor> annotations = Collections.<AnnotationDescriptor>emptyList();
|
List<AnnotationDescriptor> annotations = Collections.<AnnotationDescriptor>emptyList();
|
||||||
SimpleFunctionDescriptorImpl values =
|
SimpleFunctionDescriptorImpl values =
|
||||||
new SimpleFunctionDescriptorImpl(classObjectDescriptor, annotations,
|
new SimpleFunctionDescriptorImpl(classObjectDescriptor, annotations,
|
||||||
Name.identifier("values"),
|
VALUES_METHOD_NAME,
|
||||||
CallableMemberDescriptor.Kind.DECLARATION);
|
CallableMemberDescriptor.Kind.DECLARATION);
|
||||||
ClassReceiver classReceiver = new ClassReceiver(classObjectDescriptor);
|
ClassReceiver classReceiver = new ClassReceiver(classObjectDescriptor);
|
||||||
JetType type = DeferredType.create(trace, new LazyValue<JetType>() {
|
JetType type = DeferredType.create(trace, new LazyValue<JetType>() {
|
||||||
@Override
|
@Override
|
||||||
protected JetType compute() {
|
protected JetType compute() {
|
||||||
return JetStandardLibrary.getInstance().getArrayType(mutableClassDescriptor.getDefaultType());
|
return JetStandardLibrary.getInstance().getArrayType(enumClassDescriptor.getDefaultType());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
values.initialize(null, classReceiver, Collections.<TypeParameterDescriptor>emptyList(),Collections.<ValueParameterDescriptor>emptyList(),
|
values.initialize(null, classReceiver, Collections.<TypeParameterDescriptor>emptyList(),
|
||||||
|
Collections.<ValueParameterDescriptor>emptyList(),
|
||||||
type, Modality.FINAL,
|
type, Modality.FINAL,
|
||||||
Visibilities.PUBLIC, false);
|
Visibilities.PUBLIC, false);
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SimpleFunctionDescriptor createEnumClassObjectValueOfMethod(
|
public static SimpleFunctionDescriptor createEnumClassObjectValueOfMethod(
|
||||||
final ClassDescriptor mutableClassDescriptor,
|
final ClassDescriptor enumClassDescriptor,
|
||||||
ClassDescriptor classObjectDescriptor,
|
|
||||||
BindingTrace trace
|
BindingTrace trace
|
||||||
) {
|
) {
|
||||||
|
ClassDescriptor classObjectDescriptor = enumClassDescriptor.getClassObjectDescriptor();
|
||||||
|
assert classObjectDescriptor != null : "Enum class has no class object";
|
||||||
List<AnnotationDescriptor> annotations = Collections.<AnnotationDescriptor>emptyList();
|
List<AnnotationDescriptor> annotations = Collections.<AnnotationDescriptor>emptyList();
|
||||||
SimpleFunctionDescriptorImpl values =
|
SimpleFunctionDescriptorImpl values =
|
||||||
new SimpleFunctionDescriptorImpl(classObjectDescriptor, annotations,
|
new SimpleFunctionDescriptorImpl(classObjectDescriptor, annotations,
|
||||||
Name.identifier("valueOf"),
|
VALUE_OF_METHOD_NAME,
|
||||||
CallableMemberDescriptor.Kind.DECLARATION);
|
CallableMemberDescriptor.Kind.DECLARATION);
|
||||||
ClassReceiver classReceiver = new ClassReceiver(classObjectDescriptor);
|
ClassReceiver classReceiver = new ClassReceiver(classObjectDescriptor);
|
||||||
JetType type = DeferredType.create(trace, new LazyValue<JetType>() {
|
JetType type = DeferredType.create(trace, new LazyValue<JetType>() {
|
||||||
@Override
|
@Override
|
||||||
protected JetType compute() {
|
protected JetType compute() {
|
||||||
return mutableClassDescriptor.getDefaultType();
|
return enumClassDescriptor.getDefaultType();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ValueParameterDescriptor parameterDescriptor = new ValueParameterDescriptorImpl(
|
ValueParameterDescriptor parameterDescriptor = new ValueParameterDescriptorImpl(
|
||||||
|
|||||||
@@ -292,6 +292,7 @@ public class TypeHierarchyResolver {
|
|||||||
MutableClassDescriptor classObjectDescriptor = new MutableClassDescriptor(
|
MutableClassDescriptor classObjectDescriptor = new MutableClassDescriptor(
|
||||||
mutableClassDescriptor, outerScope, ClassKind.OBJECT,
|
mutableClassDescriptor, outerScope, ClassKind.OBJECT,
|
||||||
Name.special("<class-object-for-" + klass.getName() + ">"));
|
Name.special("<class-object-for-" + klass.getName() + ">"));
|
||||||
|
mutableClassDescriptor.getBuilder().setClassObjectDescriptor(classObjectDescriptor);
|
||||||
classObjectDescriptor.setModality(Modality.FINAL);
|
classObjectDescriptor.setModality(Modality.FINAL);
|
||||||
classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList()));
|
classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList()));
|
||||||
classObjectDescriptor.setTypeParameterDescriptors(new ArrayList<TypeParameterDescriptor>(0));
|
classObjectDescriptor.setTypeParameterDescriptors(new ArrayList<TypeParameterDescriptor>(0));
|
||||||
@@ -299,9 +300,8 @@ public class TypeHierarchyResolver {
|
|||||||
ConstructorDescriptorImpl primaryConstructorForObject =
|
ConstructorDescriptorImpl primaryConstructorForObject =
|
||||||
createPrimaryConstructorForObject(null, classObjectDescriptor);
|
createPrimaryConstructorForObject(null, classObjectDescriptor);
|
||||||
primaryConstructorForObject.setReturnType(classObjectDescriptor.getDefaultType());
|
primaryConstructorForObject.setReturnType(classObjectDescriptor.getDefaultType());
|
||||||
classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValuesMethod(mutableClassDescriptor, classObjectDescriptor, trace));
|
classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValuesMethod(mutableClassDescriptor, trace));
|
||||||
classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValueOfMethod(mutableClassDescriptor, classObjectDescriptor,trace));
|
classObjectDescriptor.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValueOfMethod(mutableClassDescriptor, trace));
|
||||||
mutableClassDescriptor.getBuilder().setClassObjectDescriptor(classObjectDescriptor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user