Renamed NamespaceComparator → RecursiveDescriptorComparator.

This commit is contained in:
Evgeny Gerashchenko
2013-10-09 19:51:46 +04:00
parent 1b28fb50b9
commit 62c542341a
10 changed files with 64 additions and 60 deletions
@@ -35,7 +35,7 @@ import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.test.util.NamespaceComparator;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import java.io.File;
import java.io.IOException;
@@ -69,7 +69,8 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
NamespaceDescriptor deserialized = serializeAndDeserialize(javaDescriptorResolver, testNamespace);
NamespaceComparator.validateAndCompareNamespaces(testNamespace, deserialized, NamespaceComparator.RECURSIVE, null);
RecursiveDescriptorComparator
.validateAndCompareDescriptors(testNamespace, deserialized, RecursiveDescriptorComparator.RECURSIVE, null);
}
@NotNull
@@ -37,7 +37,7 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.renderer.DescriptorRenderer;
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.test.util.NamespaceComparator;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import java.util.Arrays;
import java.util.Collection;
@@ -54,7 +54,7 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
Collection<DeclarationDescriptor> allDescriptors = KotlinBuiltIns.getInstance().getBuiltInsScope().getAllDescriptors();
NamespaceDescriptorImpl actualNamespace = getDeserializedDescriptorsAsNamespace(allDescriptors);
NamespaceComparator.Configuration configuration = NamespaceComparator.RECURSIVE.withRenderer(
RecursiveDescriptorComparator.Configuration configuration = RecursiveDescriptorComparator.RECURSIVE.withRenderer(
new DescriptorRendererBuilder()
.setWithDefinedIn(false)
.setExcludedAnnotationClasses(Arrays.asList(new FqName(ExpectedLoadErrorsUtil.ANNOTATION_CLASS_NAME)))
@@ -64,7 +64,8 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
.setPrettyFunctionTypes(false)
.build()
);
NamespaceComparator.validateAndCompareNamespaces(KotlinBuiltIns.getInstance().getBuiltInsPackage(), actualNamespace, configuration, null);
RecursiveDescriptorComparator
.validateAndCompareDescriptors(KotlinBuiltIns.getInstance().getBuiltInsPackage(), actualNamespace, configuration, null);
}
private static NamespaceDescriptorImpl getDeserializedDescriptorsAsNamespace(Collection<DeclarationDescriptor> allDescriptors) {
@@ -27,13 +27,13 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.test.TestCaseWithTmpdir;
import org.jetbrains.jet.test.util.NamespaceComparator;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import java.io.File;
import static org.jetbrains.jet.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME;
import static org.jetbrains.jet.jvm.compiler.LoadDescriptorUtil.compileKotlinToDirAndGetAnalyzeExhaust;
import static org.jetbrains.jet.test.util.NamespaceComparator.validateAndCompareNamespaces;
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.validateAndCompareDescriptors;
/**
* Compile Kotlin and then parse model from .class files.
@@ -71,11 +71,11 @@ public abstract class AbstractLoadCompiledKotlinTest extends TestCaseWithTmpdir
}
}
validateAndCompareNamespaces(namespaceFromSource, namespaceFromClass,
NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT
.checkPrimaryConstructors(true)
.checkPropertyAccessors(includeAccessors),
txtFile);
validateAndCompareDescriptors(namespaceFromSource, namespaceFromClass,
RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT
.checkPrimaryConstructors(true)
.checkPropertyAccessors(includeAccessors),
txtFile);
}
private static void checkUsageOfDeserializedScope(@NotNull NamespaceDescriptor namespaceFromClass) {
@@ -54,7 +54,7 @@ import java.util.Map;
import static org.jetbrains.jet.jvm.compiler.LoadDescriptorUtil.*;
import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.INCLUDE_KOTLIN_SOURCES;
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES;
import static org.jetbrains.jet.test.util.NamespaceComparator.*;
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.*;
/*
The generated test compares namespace descriptors loaded from kotlin sources and read from compiled java.
@@ -202,7 +202,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
checkForLoadErrorsAndCompare(javaNamespace, bindingContext, new Runnable() {
@Override
public void run() {
validateAndCompareNamespaces(kotlinNamespace, javaNamespace, DONT_INCLUDE_METHODS_OF_OBJECT, txtFile);
validateAndCompareDescriptors(kotlinNamespace, javaNamespace, DONT_INCLUDE_METHODS_OF_OBJECT, txtFile);
}
});
}
@@ -216,7 +216,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
checkForLoadErrorsAndCompare(javaNamespace, bindingContext, new Runnable() {
@Override
public void run() {
validateAndCompareNamespaceWithFile(javaNamespace, configuration, txtFile);
validateAndCompareDescriptorWithFile(javaNamespace, configuration, txtFile);
}
});
}
@@ -33,7 +33,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.test.TestCaseWithTmpdir;
import org.jetbrains.jet.test.util.DescriptorValidator;
import org.jetbrains.jet.test.util.NamespaceComparator;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import org.jetbrains.jet.utils.ExceptionUtils;
import java.io.BufferedOutputStream;
@@ -45,8 +45,8 @@ import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.zip.ZipOutputStream;
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isObject;
import static org.jetbrains.jet.test.util.NamespaceComparator.validateAndCompareNamespaceWithFile;
public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir {
public static final String TEST_DATA_PATH = "compiler/testData/compileKotlinAgainstCustomBinaries/";
@@ -66,10 +66,11 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir {
NamespaceDescriptor namespace = analyzeFileToNamespace(ktFile, extraClassPath);
NamespaceComparator.Configuration comparator = NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy(
DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES);
RecursiveDescriptorComparator.Configuration comparator =
RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy(
DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES);
File txtFile = new File(getTestDataDirectory(), FileUtil.getNameWithoutExtension(ktFile) + ".txt");
validateAndCompareNamespaceWithFile(namespace, comparator, txtFile);
validateAndCompareDescriptorWithFile(namespace, comparator, txtFile);
}
@NotNull
@@ -31,8 +31,8 @@ import java.io.File;
import java.util.List;
import java.util.Set;
import static org.jetbrains.jet.test.util.NamespaceComparator.RECURSIVE;
import static org.jetbrains.jet.test.util.NamespaceComparator.validateAndCompareNamespaces;
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.RECURSIVE;
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.validateAndCompareDescriptors;
public abstract class AbstractLazyResolveDiagnosticsTest extends AbstractJetDiagnosticsTest {
@@ -54,7 +54,7 @@ public abstract class AbstractLazyResolveDiagnosticsTest extends AbstractJetDiag
// Only recurse into those namespaces mentioned in the files
// Otherwise we'll be examining the whole JDK
final Set<Name> names = LazyResolveTestUtil.getTopLevelPackagesFromFileList(jetFiles);
validateAndCompareNamespaces(
validateAndCompareDescriptors(
expected, actual,
RECURSIVE.filterRecursion(new Predicate<FqNameUnsafe>() {
@Override
@@ -28,7 +28,7 @@ import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.test.util.NamespaceComparator;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import org.junit.Assert;
import java.io.File;
@@ -81,8 +81,8 @@ public abstract class AbstractLazyResolveNamespaceComparingTest extends KotlinTe
File serializeResultsTo = new File(FileUtil.getNameWithoutExtension(testFileName) + ".txt");
NamespaceComparator.validateAndCompareNamespaces(
expected, actual, NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT.filterRecursion(
RecursiveDescriptorComparator.validateAndCompareDescriptors(
expected, actual, RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT.filterRecursion(
new Predicate<FqNameUnsafe>() {
@Override
public boolean apply(FqNameUnsafe fqName) {
@@ -23,8 +23,8 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import java.io.File;
import static org.jetbrains.jet.test.util.NamespaceComparator.RECURSIVE_ALL;
import static org.jetbrains.jet.test.util.NamespaceComparator.validateAndCompareNamespaceWithFile;
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.RECURSIVE_ALL;
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile;
public class LazyResolveBuiltinClassesTest extends KotlinTestWithEnvironment {
@Override
@@ -34,6 +34,6 @@ public class LazyResolveBuiltinClassesTest extends KotlinTestWithEnvironment {
public void testBuiltIns() throws Exception {
NamespaceDescriptor builtInsPackage = KotlinBuiltIns.getInstance().getBuiltInsPackage();
validateAndCompareNamespaceWithFile(builtInsPackage, RECURSIVE_ALL, new File("compiler/testData/builtin-classes.txt"));
validateAndCompareDescriptorWithFile(builtInsPackage, RECURSIVE_ALL, new File("compiler/testData/builtin-classes.txt"));
}
}
@@ -26,7 +26,7 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.test.util.NamespaceComparator;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import java.io.File;
import java.util.List;
@@ -54,7 +54,7 @@ public class LazyResolveStdlibLoadingTest extends KotlinTestWithEnvironmentManag
for (Name name : namespaceShortNames) {
NamespaceDescriptor eager = module.getNamespace(FqName.topLevel(name));
NamespaceDescriptor lazy = lazyModule.getNamespace(FqName.topLevel(name));
NamespaceComparator.validateAndCompareNamespaces(eager, lazy, NamespaceComparator.RECURSIVE, null);
RecursiveDescriptorComparator.validateAndCompareDescriptors(eager, lazy, RecursiveDescriptorComparator.RECURSIVE, null);
}
}
@@ -44,7 +44,7 @@ import java.util.List;
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.FORBID_ERROR_TYPES;
public class NamespaceComparator {
public class RecursiveDescriptorComparator {
private static final DescriptorRenderer DEFAULT_RENDERER = new DescriptorRendererBuilder()
.setWithDefinedIn(false)
.setExcludedAnnotationClasses(Arrays.asList(new FqName(ExpectedLoadErrorsUtil.ANNOTATION_CLASS_NAME)))
@@ -67,7 +67,7 @@ public class NamespaceComparator {
private final Configuration conf;
private NamespaceComparator(@NotNull Configuration conf) {
private RecursiveDescriptorComparator(@NotNull Configuration conf) {
this.conf = conf;
}
@@ -164,60 +164,61 @@ public class NamespaceComparator {
}
}
private static void compareNamespaceWithFile(
@NotNull NamespaceDescriptor actualNamespace,
private static void compareDescriptorWithFile(
@NotNull DeclarationDescriptor actual,
@NotNull Configuration configuration,
@NotNull File txtFile
) {
doCompareNamespaces(null, actualNamespace, configuration, txtFile);
doCompareDescriptors(null, actual, configuration, txtFile);
}
private static void compareNamespaces(
@NotNull NamespaceDescriptor expectedNamespace,
@NotNull NamespaceDescriptor actualNamespace,
private static void compareDescriptors(
@NotNull DeclarationDescriptor expected,
@NotNull DeclarationDescriptor actual,
@NotNull Configuration configuration,
@Nullable File txtFile
) {
if (expectedNamespace == actualNamespace) {
throw new IllegalArgumentException("Don't invoke this method with expectedNamespace == actualNamespace." +
"Invoke compareNamespaceWithFile() instead.");
if (expected == actual) {
throw new IllegalArgumentException("Don't invoke this method with expected == actual." +
"Invoke compareDescriptorWithFile() instead.");
}
doCompareNamespaces(expectedNamespace, actualNamespace, configuration, txtFile);
doCompareDescriptors(expected, actual, configuration, txtFile);
}
public static void validateAndCompareNamespaceWithFile(
@NotNull NamespaceDescriptor actualNamespace,
public static void validateAndCompareDescriptorWithFile(
@NotNull DeclarationDescriptor actual,
@NotNull Configuration configuration,
@NotNull File txtFile
) {
DescriptorValidator.validate(configuration.validationStrategy, actualNamespace);
compareNamespaceWithFile(actualNamespace, configuration, txtFile);
DescriptorValidator.validate(configuration.validationStrategy, actual);
compareDescriptorWithFile(actual, configuration, txtFile);
}
public static void validateAndCompareNamespaces(
@NotNull NamespaceDescriptor expectedNamespace,
@NotNull NamespaceDescriptor actualNamespace,
public static void validateAndCompareDescriptors(
@NotNull DeclarationDescriptor expected,
@NotNull DeclarationDescriptor actual,
@NotNull Configuration configuration,
@Nullable File txtFile
) {
DescriptorValidator.validate(configuration.validationStrategy, expectedNamespace, actualNamespace);
compareNamespaces(expectedNamespace, actualNamespace, configuration, txtFile);
DescriptorValidator.validate(configuration.validationStrategy, expected, actual);
compareDescriptors(expected, actual, configuration, txtFile);
}
private static void doCompareNamespaces(
@Nullable NamespaceDescriptor expectedNamespace,
@NotNull NamespaceDescriptor actualNamespace,
private static void doCompareDescriptors(
@Nullable DeclarationDescriptor expected,
@NotNull DeclarationDescriptor actual,
@NotNull Configuration configuration,
@Nullable File txtFile
) {
NamespaceComparator comparator = new NamespaceComparator(configuration);
RecursiveDescriptorComparator comparator = new RecursiveDescriptorComparator(configuration);
String actualSerialized = comparator.serializeRecursively(actualNamespace);
String actualSerialized = comparator.serializeRecursively(actual);
if (expectedNamespace != null) {
String expectedSerialized = comparator.serializeRecursively(expectedNamespace);
if (expected != null) {
String expectedSerialized = comparator.serializeRecursively(expected);
Assert.assertSame(expected.getClass(), actual.getClass());
Assert.assertEquals("Expected and actual namespaces differ", expectedSerialized, actualSerialized);
Assert.assertEquals("Expected and actual descriptors differ", expectedSerialized, actualSerialized);
}
if (txtFile != null) {