diff --git a/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java b/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java index 30efdf96559..6f4c235c41d 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java +++ b/compiler/tests/org/jetbrains/jet/test/util/NamespaceComparator.java @@ -27,6 +27,7 @@ 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.constants.CompileTimeConstant; +import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.receivers.ExtensionReceiver; @@ -84,24 +85,28 @@ public class NamespaceComparator { return serialized; } - public static final Configuration DONT_INCLUDE_METHODS_OF_OBJECT = new Configuration(false, true, Predicates.alwaysTrue()); - public static final Configuration RECURSIVE = new Configuration(true, true, Predicates.alwaysTrue()); - public static final Configuration NON_RECURSIVE = new Configuration(true, false, Predicates.alwaysTrue()); + public static final Configuration DONT_INCLUDE_METHODS_OF_OBJECT = new Configuration(false, Predicates.alwaysTrue(), Predicates.alwaysTrue()); + public static final Configuration RECURSIVE = new Configuration(true, Predicates.alwaysTrue(), Predicates.alwaysTrue()); + public static final Configuration NON_RECURSIVE = new Configuration(true, Predicates.alwaysFalse(), Predicates.alwaysTrue()); public static class Configuration { private final boolean includeObject; - private final boolean recursive; + private final Predicate recurseIntoPackage; private final Predicate includeIntoOutput; - public Configuration(boolean includeObject, boolean recursive, Predicate includeIntoOutput) { + public Configuration(boolean includeObject, Predicate recurseIntoPackage, Predicate includeIntoOutput) { this.includeObject = includeObject; - this.recursive = recursive; + this.recurseIntoPackage = recurseIntoPackage; this.includeIntoOutput = includeIntoOutput; } public Configuration filterOutput(@NotNull Predicate includeIntoOutput) { - return new Configuration(includeObject, recursive, includeIntoOutput); + return new Configuration(includeObject, recurseIntoPackage, includeIntoOutput); + } + + public Configuration filterRecusion(@NotNull Predicate recurseIntoPackage) { + return new Configuration(includeObject, recurseIntoPackage, includeIntoOutput); } } @@ -135,7 +140,7 @@ public class NamespaceComparator { functionNames.add(ad.getName()); } else if (ad instanceof NamespaceDescriptor) { - if (conf.recursive) { + if (conf.recurseIntoPackage.apply(DescriptorUtils.getFQName(ad))) { NamespaceDescriptor namespaceDescriptorA = (NamespaceDescriptor) ad; NamespaceDescriptor namespaceDescriptorB = nsb.getMemberScope().getNamespace(namespaceDescriptorA.getName()); //deferred.assertNotNull("Namespace not found: " + namespaceDescriptorA.getQualifiedName(), namespaceDescriptorB);