From 1728b77b2c466820b4028c5fbad89b7ae6dcc7f8 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 5 Jun 2017 12:34:57 +0300 Subject: [PATCH] Minor, refactor createBuiltInsPackageFragmentProvider --- .../builtins/BuiltInsSerializerTest.kt | 4 +- .../builtins/LoadBuiltinsTest.java | 4 +- .../builtInsPackageFragmentProvider.kt | 80 ++++++++++--------- 3 files changed, 45 insertions(+), 43 deletions(-) diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt index df7fe25e8c8..611c0ea9f84 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt @@ -16,8 +16,8 @@ package org.jetbrains.kotlin.serialization.builtins +import org.jetbrains.kotlin.builtins.BuiltInsLoaderImpl import org.jetbrains.kotlin.builtins.DefaultBuiltIns -import org.jetbrains.kotlin.builtins.createBuiltInPackageFragmentProvider import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentDeclarationFilter import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME @@ -40,7 +40,7 @@ class BuiltInsSerializerTest : TestCaseWithTmpdir() { val module = KotlinTestUtils.createEmptyModule("", DefaultBuiltIns.Instance) - val packageFragmentProvider = createBuiltInPackageFragmentProvider( + val packageFragmentProvider = BuiltInsLoaderImpl().createBuiltInPackageFragmentProvider( LockBasedStorageManager(), module, setOf(TEST_PACKAGE_FQNAME), emptyList(), PlatformDependentDeclarationFilter.All ) { val file = File(tmpdir, it) diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java index 3611a64adda..e475ed026c4 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java @@ -21,6 +21,7 @@ import com.intellij.util.containers.ContainerUtil; import kotlin.Unit; import kotlin.collections.CollectionsKt; import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.builtins.BuiltInsLoaderImpl; import org.jetbrains.kotlin.builtins.DefaultBuiltIns; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.builtins.functions.BuiltInFictitiousFunctionClassFactory; @@ -52,7 +53,6 @@ import java.util.Collections; import java.util.List; import java.util.regex.Pattern; -import static org.jetbrains.kotlin.builtins.BuiltInsPackageFragmentProviderKt.createBuiltInPackageFragmentProvider; import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.*; public class LoadBuiltinsTest extends KotlinTestWithEnvironment { @@ -106,7 +106,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment { ModuleDescriptorImpl builtInsModule = new ModuleDescriptorImpl(KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, DefaultBuiltIns.getInstance()); - PackageFragmentProvider packageFragmentProvider = createBuiltInPackageFragmentProvider( + PackageFragmentProvider packageFragmentProvider = new BuiltInsLoaderImpl().createBuiltInPackageFragmentProvider( storageManager, builtInsModule, BUILT_INS_PACKAGE_FQ_NAMES, Collections.singletonList(new BuiltInFictitiousFunctionClassFactory(storageManager, builtInsModule)), PlatformDependentDeclarationFilter.All.INSTANCE, diff --git a/core/deserialization/src/org/jetbrains/kotlin/builtins/builtInsPackageFragmentProvider.kt b/core/deserialization/src/org/jetbrains/kotlin/builtins/builtInsPackageFragmentProvider.kt index e206683ee5e..3813e4245bf 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/builtins/builtInsPackageFragmentProvider.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/builtins/builtInsPackageFragmentProvider.kt @@ -29,44 +29,46 @@ import org.jetbrains.kotlin.serialization.deserialization.* import org.jetbrains.kotlin.storage.StorageManager import java.io.InputStream -fun createBuiltInPackageFragmentProvider( - storageManager: StorageManager, - module: ModuleDescriptor, - packageFqNames: Set, - classDescriptorFactories: Iterable, - platformDependentDeclarationFilter: PlatformDependentDeclarationFilter, - additionalClassPartsProvider: AdditionalClassPartsProvider = AdditionalClassPartsProvider.None, - loadResource: (String) -> InputStream? -): PackageFragmentProvider { - val packageFragments = packageFqNames.map { fqName -> - val resourcePath = BuiltInSerializerProtocol.getBuiltInsFilePath(fqName) - val inputStream = loadResource(resourcePath) ?: throw IllegalStateException("Resource not found in classpath: $resourcePath") - BuiltInsPackageFragmentImpl(fqName, storageManager, module, inputStream) +class BuiltInsLoaderImpl { + fun createBuiltInPackageFragmentProvider( + storageManager: StorageManager, + module: ModuleDescriptor, + packageFqNames: Set, + classDescriptorFactories: Iterable, + platformDependentDeclarationFilter: PlatformDependentDeclarationFilter, + additionalClassPartsProvider: AdditionalClassPartsProvider = AdditionalClassPartsProvider.None, + loadResource: (String) -> InputStream? + ): PackageFragmentProvider { + val packageFragments = packageFqNames.map { fqName -> + val resourcePath = BuiltInSerializerProtocol.getBuiltInsFilePath(fqName) + val inputStream = loadResource(resourcePath) ?: throw IllegalStateException("Resource not found in classpath: $resourcePath") + BuiltInsPackageFragmentImpl(fqName, storageManager, module, inputStream) + } + val provider = PackageFragmentProviderImpl(packageFragments) + + val notFoundClasses = NotFoundClasses(storageManager, module) + + val components = DeserializationComponents( + storageManager, + module, + DeserializationConfiguration.Default, + DeserializedClassDataFinder(provider), + AnnotationAndConstantLoaderImpl(module, notFoundClasses, BuiltInSerializerProtocol), + provider, + LocalClassifierTypeSettings.Default, + ErrorReporter.DO_NOTHING, + LookupTracker.DO_NOTHING, + FlexibleTypeDeserializer.ThrowException, + classDescriptorFactories, + notFoundClasses, + additionalClassPartsProvider = additionalClassPartsProvider, + platformDependentDeclarationFilter = platformDependentDeclarationFilter + ) + + for (packageFragment in packageFragments) { + packageFragment.components = components + } + + return provider } - val provider = PackageFragmentProviderImpl(packageFragments) - - val notFoundClasses = NotFoundClasses(storageManager, module) - - val components = DeserializationComponents( - storageManager, - module, - DeserializationConfiguration.Default, - DeserializedClassDataFinder(provider), - AnnotationAndConstantLoaderImpl(module, notFoundClasses, BuiltInSerializerProtocol), - provider, - LocalClassifierTypeSettings.Default, - ErrorReporter.DO_NOTHING, - LookupTracker.DO_NOTHING, - FlexibleTypeDeserializer.ThrowException, - classDescriptorFactories, - notFoundClasses, - additionalClassPartsProvider = additionalClassPartsProvider, - platformDependentDeclarationFilter = platformDependentDeclarationFilter - ) - - for (packageFragment in packageFragments) { - packageFragment.components = components - } - - return provider }