Stable member sorting.
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.resolve;
|
||||
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
@@ -25,6 +26,8 @@ import java.util.List;
|
||||
public class MemberComparator implements Comparator<DeclarationDescriptor> {
|
||||
public static final MemberComparator INSTANCE = new MemberComparator();
|
||||
|
||||
private static final DescriptorRenderer RENDERER = new DescriptorRendererBuilder().setWithDefinedIn(false).setVerbose(true).build();
|
||||
|
||||
private MemberComparator() {
|
||||
}
|
||||
|
||||
@@ -77,8 +80,8 @@ public class MemberComparator implements Comparator<DeclarationDescriptor> {
|
||||
ReceiverParameterDescriptor c2ReceiverParameter = c2.getReceiverParameter();
|
||||
assert (c1ReceiverParameter != null) == (c2ReceiverParameter != null);
|
||||
if (c1ReceiverParameter != null) {
|
||||
String r1 = DescriptorRenderer.TEXT.renderType(c1ReceiverParameter.getType());
|
||||
String r2 = DescriptorRenderer.TEXT.renderType(c2ReceiverParameter.getType());
|
||||
String r1 = RENDERER.renderType(c1ReceiverParameter.getType());
|
||||
String r2 = RENDERER.renderType(c2ReceiverParameter.getType());
|
||||
int receiversCompareTo = r1.compareTo(r2);
|
||||
if (receiversCompareTo != 0) {
|
||||
return receiversCompareTo;
|
||||
@@ -88,8 +91,8 @@ public class MemberComparator implements Comparator<DeclarationDescriptor> {
|
||||
List<ValueParameterDescriptor> c1ValueParameters = c1.getValueParameters();
|
||||
List<ValueParameterDescriptor> c2ValueParameters = c2.getValueParameters();
|
||||
for (int i = 0; i < Math.min(c1ValueParameters.size(), c2ValueParameters.size()); i++) {
|
||||
String p1 = DescriptorRenderer.TEXT.renderType(c1ValueParameters.get(i).getType());
|
||||
String p2 = DescriptorRenderer.TEXT.renderType(c2ValueParameters.get(i).getType());
|
||||
String p1 = RENDERER.renderType(c1ValueParameters.get(i).getType());
|
||||
String p2 = RENDERER.renderType(c2ValueParameters.get(i).getType());
|
||||
int parametersCompareTo = p1.compareTo(p2);
|
||||
if (parametersCompareTo != 0) {
|
||||
return parametersCompareTo;
|
||||
@@ -104,8 +107,8 @@ public class MemberComparator implements Comparator<DeclarationDescriptor> {
|
||||
List<TypeParameterDescriptor> c1TypeParameters = c1.getTypeParameters();
|
||||
List<TypeParameterDescriptor> c2TypeParameters = c2.getTypeParameters();
|
||||
for (int i = 0; i < Math.min(c1TypeParameters.size(), c2TypeParameters.size()); i++) {
|
||||
String p1 = DescriptorRenderer.TEXT.renderType(c1TypeParameters.get(i).getUpperBoundsAsType());
|
||||
String p2 = DescriptorRenderer.TEXT.renderType(c2TypeParameters.get(i).getUpperBoundsAsType());
|
||||
String p1 = RENDERER.renderType(c1TypeParameters.get(i).getUpperBoundsAsType());
|
||||
String p2 = RENDERER.renderType(c2TypeParameters.get(i).getUpperBoundsAsType());
|
||||
int parametersCompareTo = p1.compareTo(p2);
|
||||
if (parametersCompareTo != 0) {
|
||||
return parametersCompareTo;
|
||||
@@ -120,9 +123,12 @@ public class MemberComparator implements Comparator<DeclarationDescriptor> {
|
||||
if (c1 instanceof CallableMemberDescriptor && c2 instanceof CallableMemberDescriptor) {
|
||||
CallableMemberDescriptor.Kind c1Kind = ((CallableMemberDescriptor) c1).getKind();
|
||||
CallableMemberDescriptor.Kind c2Kind = ((CallableMemberDescriptor) c2).getKind();
|
||||
return c1Kind.ordinal() - c2Kind.ordinal();
|
||||
int kindsCompareTo = c1Kind.ordinal() - c2Kind.ordinal();
|
||||
if (kindsCompareTo != 0) {
|
||||
return kindsCompareTo;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return RENDERER.render(o1).compareTo(RENDERER.render(o2));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user