From c483a7f7cddad7a7798ba47ec8367b7c44de6fab Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 27 Dec 2012 13:03:07 +0400 Subject: [PATCH] Simplified code in NamespaceComparator. --- .../jet/test/util/NamespaceComparator.java | 80 +++++++++++-------- 1 file changed, 46 insertions(+), 34 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java b/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java index b541c6e1d50..caa632a328c 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java +++ b/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java @@ -39,6 +39,7 @@ import org.junit.Assert; import java.io.File; import java.io.IOException; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; @@ -78,47 +79,21 @@ public class NamespaceComparator { printer.print(isPrimaryConstructor && conf.checkPrimaryConstructors ? "/*primary*/ " : "", RENDERER.render(descriptor)); if (descriptor instanceof ClassOrNamespaceDescriptor) { - if (topLevel) { - printer.println(); - printer.println(); - } - else { + if (!topLevel) { printer.printlnWithNoIndent(" {").pushIndent(); } - - List subDescriptors = Lists.newArrayList(); + else { + printer.println(); + printer.println(); + } if (descriptor instanceof ClassDescriptor) { ClassDescriptor klass = (ClassDescriptor) descriptor; - JetScope memberScope = klass.getDefaultType().getMemberScope(); - - subDescriptors.addAll(klass.getConstructors()); - subDescriptors.addAll(memberScope.getAllDescriptors()); - subDescriptors.addAll(memberScope.getObjectDescriptors()); - ContainerUtil.addIfNotNull(subDescriptors, klass.getClassObjectDescriptor()); + appendSubDescriptors(klass.getDefaultType().getMemberScope(), getConstructorsAndClassObject(klass), printer); } else if (descriptor instanceof NamespaceDescriptor) { - JetScope memberScope = ((NamespaceDescriptor) descriptor).getMemberScope(); - subDescriptors.addAll(memberScope.getAllDescriptors()); - subDescriptors.addAll(memberScope.getObjectDescriptors()); - } - else { - throw new IllegalStateException("Should be class or namespace: " + descriptor.getClass()); - } - - Collections.sort(subDescriptors, MemberComparator.INSTANCE); - - for (DeclarationDescriptor subDescriptor : subDescriptors) { - if (!conf.includeMethodsOfJavaObject && subDescriptor instanceof FunctionDescriptor - && JAVA_OBJECT_METHOD_NAMES.contains(subDescriptor.getName().getName())) { - continue; - } - - if (subDescriptor instanceof NamespaceDescriptor && !conf.recurseIntoPackage.apply(DescriptorUtils.getFQName(subDescriptor))) { - continue; - } - - appendDeclarationRecursively(subDescriptor, printer, false); + appendSubDescriptors(((NamespaceDescriptor) descriptor).getMemberScope(), + Collections.emptyList(), printer); } if (!topLevel) { @@ -130,6 +105,43 @@ public class NamespaceComparator { } } + @NotNull + private static List getConstructorsAndClassObject(@NotNull ClassDescriptor klass) { + List constructorsAndClassObject = Lists.newArrayList(); + constructorsAndClassObject.addAll(klass.getConstructors()); + ContainerUtil.addIfNotNull(constructorsAndClassObject, klass.getClassObjectDescriptor()); + return constructorsAndClassObject; + } + + private boolean shouldSkip(@NotNull DeclarationDescriptor subDescriptor) { + return subDescriptor.getContainingDeclaration() instanceof ClassDescriptor + && subDescriptor instanceof FunctionDescriptor + && JAVA_OBJECT_METHOD_NAMES.contains(subDescriptor.getName().getName()) + && !conf.includeMethodsOfJavaObject + || + subDescriptor instanceof NamespaceDescriptor && !conf.recurseIntoPackage.apply(DescriptorUtils.getFQName(subDescriptor)); + } + + private void appendSubDescriptors( + @NotNull JetScope memberScope, + @NotNull Collection extraSubDescriptors, + @NotNull Printer printer + ) { + List subDescriptors = Lists.newArrayList(); + + subDescriptors.addAll(memberScope.getAllDescriptors()); + subDescriptors.addAll(memberScope.getObjectDescriptors()); + subDescriptors.addAll(extraSubDescriptors); + + Collections.sort(subDescriptors, MemberComparator.INSTANCE); + + for (DeclarationDescriptor subDescriptor : subDescriptors) { + if (!shouldSkip(subDescriptor)) { + appendDeclarationRecursively(subDescriptor, printer, false); + } + } + } + public static void compareNamespaceWithFile( @NotNull NamespaceDescriptor actualNamespace, @NotNull Configuration configuration,