Check that lazy resolve works correctly on built-ins

This test is needed because BuiltInsSerializer uses lazy resolve to load and
serialize built-ins. We need to make sure that lazy resolve works exactly like
deserialization
This commit is contained in:
Alexander Udalov
2014-01-23 16:47:11 +04:00
parent e28819b42e
commit 320a583de8
@@ -16,17 +16,26 @@
package org.jetbrains.jet.descriptors.serialization;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.TestJdkKind;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.renderer.DescriptorRenderer;
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import java.io.File;
import java.util.List;
import java.util.regex.Pattern;
public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
@Override
@@ -44,8 +53,24 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
.build()
);
PackageFragmentDescriptor actualFragment = KotlinBuiltIns.getInstance().getBuiltInsPackageFragment();
RecursiveDescriptorComparator
.validateAndCompareDescriptorWithFile(actualFragment, configuration, new File("compiler/testData/builtin-classes.txt"));
List<JetFile> files = JetTestUtils.loadToJetFiles(getEnvironment(), ContainerUtil.concat(
allFilesUnder("core/builtins/native"),
allFilesUnder("core/builtins/src")
));
ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(files, getEnvironment(), false);
List<PackageFragmentDescriptor> fragments =
module.getPackageFragmentProvider().getPackageFragments(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
assertSize(1, fragments);
PackageFragmentDescriptor fromLazyResolve = fragments.iterator().next();
PackageFragmentDescriptor deserialized = KotlinBuiltIns.getInstance().getBuiltInsPackageFragment();
RecursiveDescriptorComparator.validateAndCompareDescriptors(
fromLazyResolve, deserialized, configuration,
new File("compiler/testData/builtin-classes.txt")
);
}
@NotNull
private static List<File> allFilesUnder(@NotNull String directory) {
return FileUtil.findFilesByMask(Pattern.compile(".*\\.kt"), new File(directory));
}
}