Removed output filter from NamespaceComparator.

This commit is contained in:
Evgeny Gerashchenko
2012-12-26 19:33:59 +04:00
parent 5dec5a4c28
commit d01193f8a3
2 changed files with 17 additions and 33 deletions
@@ -25,7 +25,9 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiFactory; import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.test.util.NamespaceComparator; import org.jetbrains.jet.test.util.NamespaceComparator;
import java.io.File; import java.io.File;
@@ -70,11 +72,12 @@ public abstract class AbstractLazyResolveNamespaceComparingTest extends KotlinTe
File serializeResultsTo = new File(FileUtil.getNameWithoutExtension(testFileName) + ".txt"); File serializeResultsTo = new File(FileUtil.getNameWithoutExtension(testFileName) + ".txt");
NamespaceComparator.compareNamespaces(expected, actual, NamespaceComparator.compareNamespaces(expected, actual,
NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT.filterOutput(new Predicate<NamespaceDescriptor>() { NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT.filterRecusion(
@Override new Predicate<FqNameUnsafe>() {
public boolean apply(NamespaceDescriptor namespaceDescriptor) { @Override
return !namespaceDescriptor.getName().equals(Name.identifier("jet")); public boolean apply(FqNameUnsafe fqName) {
} return !KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.toUnsafe().equals(fqName);
}).checkPrimaryConstructors(checkPrimaryConstructors), serializeResultsTo); }
}).checkPrimaryConstructors(checkPrimaryConstructors), serializeResultsTo);
} }
} }
@@ -19,28 +19,19 @@ package org.jetbrains.jet.test.util;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.codegen.PropertyCodegen; import org.jetbrains.jet.codegen.PropertyCodegen;
import org.jetbrains.jet.jvm.compiler.ExpectedLoadErrorsUtil; import org.jetbrains.jet.jvm.compiler.ExpectedLoadErrorsUtil;
import org.jetbrains.jet.lang.descriptors.*; 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.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.MemberComparator; import org.jetbrains.jet.lang.resolve.MemberComparator;
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.ErrorUtils;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeProjection;
import org.jetbrains.jet.lang.types.Variance;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.renderer.DescriptorRenderer;
import org.jetbrains.jet.renderer.DescriptorRendererBuilder; import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
import org.jetbrains.jet.utils.Printer; import org.jetbrains.jet.utils.Printer;
@@ -49,7 +40,6 @@ import org.junit.ComparisonFailure;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Method;
import java.util.*; import java.util.*;
/** /**
@@ -97,38 +87,31 @@ public class NamespaceComparator {
return serialized; return serialized;
} }
public static final Configuration DONT_INCLUDE_METHODS_OF_OBJECT = new Configuration(false, false, Predicates.<FqNameUnsafe>alwaysTrue(), Predicates.<NamespaceDescriptor>alwaysTrue()); public static final Configuration DONT_INCLUDE_METHODS_OF_OBJECT = new Configuration(false, false, Predicates.<FqNameUnsafe>alwaysTrue());
public static final Configuration RECURSIVE = new Configuration(false, true, Predicates.<FqNameUnsafe>alwaysTrue(), Predicates.<NamespaceDescriptor>alwaysTrue()); public static final Configuration RECURSIVE = new Configuration(false, true, Predicates.<FqNameUnsafe>alwaysTrue());
public static class Configuration { public static class Configuration {
private final boolean checkPrimaryConstructors; private final boolean checkPrimaryConstructors;
private final boolean includeObject; private final boolean includeObject;
private final Predicate<FqNameUnsafe> recurseIntoPackage; private final Predicate<FqNameUnsafe> recurseIntoPackage;
private final Predicate<NamespaceDescriptor> includeIntoOutput;
public Configuration( public Configuration(
boolean checkPrimaryConstructors, boolean checkPrimaryConstructors,
boolean includeObject, boolean includeObject,
Predicate<FqNameUnsafe> recurseIntoPackage, Predicate<FqNameUnsafe> recurseIntoPackage
Predicate<NamespaceDescriptor> includeIntoOutput
) { ) {
this.checkPrimaryConstructors = checkPrimaryConstructors; this.checkPrimaryConstructors = checkPrimaryConstructors;
this.includeObject = includeObject; this.includeObject = includeObject;
this.recurseIntoPackage = recurseIntoPackage; this.recurseIntoPackage = recurseIntoPackage;
this.includeIntoOutput = includeIntoOutput;
}
public Configuration filterOutput(@NotNull Predicate<NamespaceDescriptor> includeIntoOutput) {
return new Configuration(checkPrimaryConstructors, includeObject, recurseIntoPackage, includeIntoOutput);
} }
public Configuration filterRecusion(@NotNull Predicate<FqNameUnsafe> recurseIntoPackage) { public Configuration filterRecusion(@NotNull Predicate<FqNameUnsafe> recurseIntoPackage) {
return new Configuration(checkPrimaryConstructors, includeObject, recurseIntoPackage, includeIntoOutput); return new Configuration(checkPrimaryConstructors, includeObject, recurseIntoPackage);
} }
public Configuration checkPrimaryConstructors(boolean checkPrimaryConstructors) { public Configuration checkPrimaryConstructors(boolean checkPrimaryConstructors) {
return new Configuration(checkPrimaryConstructors, includeObject, recurseIntoPackage, includeIntoOutput); return new Configuration(checkPrimaryConstructors, includeObject, recurseIntoPackage);
} }
} }
@@ -172,11 +155,9 @@ public class NamespaceComparator {
} }
else { else {
String comparison = doCompareNamespaces(namespaceDescriptorA, namespaceDescriptorB); String comparison = doCompareNamespaces(namespaceDescriptorA, namespaceDescriptorB);
if (conf.includeIntoOutput.apply(namespaceDescriptorA)) { sb.append("// <namespace name=\"" + namespaceDescriptorA.getName() + "\">\n");
sb.append("// <namespace name=\"" + namespaceDescriptorA.getName() + "\">\n"); sb.append(comparison);
sb.append(comparison); sb.append("// </namespace name=\"" + namespaceDescriptorA.getName() + "\">\n");
sb.append("// </namespace name=\"" + namespaceDescriptorA.getName() + "\">\n");
}
} }
} }
} }