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:
@@ -16,17 +16,26 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.descriptors.serialization;
|
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.ConfigurationKind;
|
||||||
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.TestJdkKind;
|
import org.jetbrains.jet.TestJdkKind;
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
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.descriptors.PackageFragmentDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
|
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.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.test.util.RecursiveDescriptorComparator;
|
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
||||||
@Override
|
@Override
|
||||||
@@ -44,8 +53,24 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
|||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
|
||||||
PackageFragmentDescriptor actualFragment = KotlinBuiltIns.getInstance().getBuiltInsPackageFragment();
|
List<JetFile> files = JetTestUtils.loadToJetFiles(getEnvironment(), ContainerUtil.concat(
|
||||||
RecursiveDescriptorComparator
|
allFilesUnder("core/builtins/native"),
|
||||||
.validateAndCompareDescriptorWithFile(actualFragment, configuration, new File("compiler/testData/builtin-classes.txt"));
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user