From 1e92594e99c8b0bfa1bc037f8a01470fa355ad1b Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Sat, 3 Mar 2012 00:19:32 +0400 Subject: [PATCH] better member sorting in Read*BinaryClassTest --- .../fun/nonGeneric/ModifierAbstract.txt | 2 +- .../prop/ClassValAbstract.txt | 2 +- .../readKotlinBinaryClass/prop/ExtVarl.txt | 2 +- .../jet/compiler/NamespaceComparator.java | 32 +++++++++++++++---- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/compiler/testData/readKotlinBinaryClass/fun/nonGeneric/ModifierAbstract.txt b/compiler/testData/readKotlinBinaryClass/fun/nonGeneric/ModifierAbstract.txt index 0591e678a20..33375927f26 100644 --- a/compiler/testData/readKotlinBinaryClass/fun/nonGeneric/ModifierAbstract.txt +++ b/compiler/testData/readKotlinBinaryClass/fun/nonGeneric/ModifierAbstract.txt @@ -1,6 +1,6 @@ namespace test abstract class test.ModifierAbstract : jet.Any { - abstract fun abs(): jet.Int final /*constructor*/ fun (): test.ModifierAbstract + abstract fun abs(): jet.Int } diff --git a/compiler/testData/readKotlinBinaryClass/prop/ClassValAbstract.txt b/compiler/testData/readKotlinBinaryClass/prop/ClassValAbstract.txt index a7c3e6170ca..fbde0618de8 100644 --- a/compiler/testData/readKotlinBinaryClass/prop/ClassValAbstract.txt +++ b/compiler/testData/readKotlinBinaryClass/prop/ClassValAbstract.txt @@ -1,6 +1,6 @@ namespace test abstract class test.ClassValAbstract : jet.Any { - abstract val a: jet.Int final /*constructor*/ fun (): test.ClassValAbstract + abstract val a: jet.Int } diff --git a/compiler/testData/readKotlinBinaryClass/prop/ExtVarl.txt b/compiler/testData/readKotlinBinaryClass/prop/ExtVarl.txt index 8db924bcf40..64bdabda971 100644 --- a/compiler/testData/readKotlinBinaryClass/prop/ExtVarl.txt +++ b/compiler/testData/readKotlinBinaryClass/prop/ExtVarl.txt @@ -1,4 +1,4 @@ namespace test -final val jet.String.junk: jet.Int final var jet.Int.junk: jet.Short +final val jet.String.junk: jet.Int diff --git a/compiler/tests/org/jetbrains/jet/compiler/NamespaceComparator.java b/compiler/tests/org/jetbrains/jet/compiler/NamespaceComparator.java index ac7c374656d..110951d6d1b 100644 --- a/compiler/tests/org/jetbrains/jet/compiler/NamespaceComparator.java +++ b/compiler/tests/org/jetbrains/jet/compiler/NamespaceComparator.java @@ -51,6 +51,7 @@ import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -135,7 +136,7 @@ class NamespaceComparator { Set fb = nsb.getMemberScope().getFunctions(name); compareDeclarationSets(fa, fb, sb); } - + return sb.toString(); } @@ -155,7 +156,7 @@ class NamespaceComparator { strings.add(sb.toString()); } - Collections.sort(strings); + Collections.sort(strings, new MemberComparator()); StringBuilder r = new StringBuilder(); for (String string : strings) { @@ -165,6 +166,25 @@ 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) { + return s.replaceFirst( + "^ *(private|final|abstract|open|override|fun|val|var|/\\*.*?\\*/|((?!)<.*?>)| )*", + "") + + s; + } + + @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(); @@ -226,7 +246,7 @@ class NamespaceComparator { new Serializer(sb).serializeSeparated(fun.getAnnotations(), " "); sb.append(" "); } - + if (!fun.getOverriddenDescriptors().isEmpty()) { sb.append("override /*" + fun.getOverriddenDescriptors().size() + "*/ "); } @@ -500,7 +520,7 @@ class NamespaceComparator { serializeCommaSeparated(klass.getTypeConstructor().getParameters()); sb.append(">"); } - + if (!klass.getTypeConstructor().getSupertypes().isEmpty()) { sb.append(" : "); new Serializer(sb).serializeCommaSeparated(new ArrayList(klass.getTypeConstructor().getSupertypes())); @@ -533,12 +553,12 @@ class NamespaceComparator { memberStrings.add(memberSb.toString()); } - Collections.sort(memberStrings); + Collections.sort(memberStrings, new MemberComparator()); for (String memberString : memberStrings) { sb.append(indent(memberString)); } - + if (klass.getClassObjectDescriptor() != null) { StringBuilder sbForClassObject = new StringBuilder(); new FullContentSerialier(sbForClassObject).serialize(klass.getClassObjectDescriptor());