From 20341a84e62991c2cf98b813adf2e28d02be208d Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 25 Dec 2012 21:26:33 +0400 Subject: [PATCH] Sorting members instead of member strings. --- .../jet/test/util/NamespaceComparator.java | 37 +++++-------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java b/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java index 627eca7229d..4f03393e911 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java +++ b/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java @@ -30,6 +30,7 @@ import org.jetbrains.jet.jvm.compiler.ExpectedLoadErrorsUtil; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.resolve.DescriptorUtils; +import org.jetbrains.jet.lang.resolve.MemberComparator; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.name.Name; @@ -229,14 +230,17 @@ public class NamespaceComparator { } private String serializedDeclarationSets(Collection ds) { + List members = Lists.newArrayList(ds); + + Collections.sort(members, MemberComparator.INSTANCE); + List strings = new ArrayList(); - for (DeclarationDescriptor d : ds) { + for (DeclarationDescriptor d : members) { StringBuilder sb = new StringBuilder(); new Serializer(conf.checkPrimaryConstructors, sb).serialize(d); strings.add(sb.toString()); } - Collections.sort(strings, new MemberComparator()); StringBuilder r = new StringBuilder(); for (String string : strings) { @@ -246,28 +250,6 @@ public class NamespaceComparator { return r.toString(); } - /** - * This comparator only affects test output, you can drop it if you don't want to understand it. - */ - private static class MemberComparator implements Comparator { - - @NotNull - private String normalize(String s) { - // Serializers put "!" in front of the name in order to facilitate faster sorting of members - int i = s.indexOf("!"); - if (i < 0) { - throw new IllegalStateException("No name mark in " + s); - } - String substring = s.substring(i + 1); - return substring; - } - - @Override - public int compare(@NotNull String a, @NotNull String b) { - return normalize(a).compareTo(normalize(b)); - } - } - private void compareClassifiers(@NotNull ClassifierDescriptor a, @NotNull ClassifierDescriptor b, @NotNull StringBuilder sb) { StringBuilder sba = new StringBuilder(); StringBuilder sbb = new StringBuilder(); @@ -754,7 +736,10 @@ public class NamespaceComparator { } JetScope memberScope = klass.getMemberScope(typeArguments); - for (DeclarationDescriptor member : memberScope.getAllDescriptors()) { + ArrayList members = Lists.newArrayList(memberScope.getAllDescriptors()); + ContainerUtil.sort(members, MemberComparator.INSTANCE); + + for (DeclarationDescriptor member : members) { if (!conf.includeObject) { if (member.getName().getName().matches("equals|hashCode|finalize|wait|notify(All)?|toString|clone|getClass")) { continue; @@ -771,8 +756,6 @@ public class NamespaceComparator { memberStrings.add(objectSb.toString()); } - Collections.sort(memberStrings, new MemberComparator()); - for (String memberString : memberStrings) { sb.append(indent(memberString)); }