From 320a583de8c09644c57b9bcb761deb4389b481b9 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 23 Jan 2014 16:47:11 +0400 Subject: [PATCH] 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 --- .../serialization/LoadBuiltinsTest.java | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/descriptors/serialization/LoadBuiltinsTest.java b/compiler/tests/org/jetbrains/jet/descriptors/serialization/LoadBuiltinsTest.java index 4ed6b6150b6..88f6b3b022d 100644 --- a/compiler/tests/org/jetbrains/jet/descriptors/serialization/LoadBuiltinsTest.java +++ b/compiler/tests/org/jetbrains/jet/descriptors/serialization/LoadBuiltinsTest.java @@ -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 files = JetTestUtils.loadToJetFiles(getEnvironment(), ContainerUtil.concat( + allFilesUnder("core/builtins/native"), + allFilesUnder("core/builtins/src") + )); + ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(files, getEnvironment(), false); + List 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 allFilesUnder(@NotNull String directory) { + return FileUtil.findFilesByMask(Pattern.compile(".*\\.kt"), new File(directory)); } }