Minor, refactor createBuiltInsPackageFragmentProvider
This commit is contained in:
+2
-2
@@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.serialization.builtins
|
package org.jetbrains.kotlin.serialization.builtins
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.builtins.BuiltInsLoaderImpl
|
||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.createBuiltInPackageFragmentProvider
|
|
||||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||||
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentDeclarationFilter
|
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentDeclarationFilter
|
||||||
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME
|
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME
|
||||||
@@ -40,7 +40,7 @@ class BuiltInsSerializerTest : TestCaseWithTmpdir() {
|
|||||||
|
|
||||||
val module = KotlinTestUtils.createEmptyModule("<module>", DefaultBuiltIns.Instance)
|
val module = KotlinTestUtils.createEmptyModule("<module>", DefaultBuiltIns.Instance)
|
||||||
|
|
||||||
val packageFragmentProvider = createBuiltInPackageFragmentProvider(
|
val packageFragmentProvider = BuiltInsLoaderImpl().createBuiltInPackageFragmentProvider(
|
||||||
LockBasedStorageManager(), module, setOf(TEST_PACKAGE_FQNAME), emptyList(), PlatformDependentDeclarationFilter.All
|
LockBasedStorageManager(), module, setOf(TEST_PACKAGE_FQNAME), emptyList(), PlatformDependentDeclarationFilter.All
|
||||||
) {
|
) {
|
||||||
val file = File(tmpdir, it)
|
val file = File(tmpdir, it)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.intellij.util.containers.ContainerUtil;
|
|||||||
import kotlin.Unit;
|
import kotlin.Unit;
|
||||||
import kotlin.collections.CollectionsKt;
|
import kotlin.collections.CollectionsKt;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.kotlin.builtins.BuiltInsLoaderImpl;
|
||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||||
import org.jetbrains.kotlin.builtins.functions.BuiltInFictitiousFunctionClassFactory;
|
import org.jetbrains.kotlin.builtins.functions.BuiltInFictitiousFunctionClassFactory;
|
||||||
@@ -52,7 +53,6 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static org.jetbrains.kotlin.builtins.BuiltInsPackageFragmentProviderKt.createBuiltInPackageFragmentProvider;
|
|
||||||
import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.*;
|
import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.*;
|
||||||
|
|
||||||
public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
||||||
@@ -106,7 +106,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
|||||||
ModuleDescriptorImpl builtInsModule =
|
ModuleDescriptorImpl builtInsModule =
|
||||||
new ModuleDescriptorImpl(KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, DefaultBuiltIns.getInstance());
|
new ModuleDescriptorImpl(KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, DefaultBuiltIns.getInstance());
|
||||||
|
|
||||||
PackageFragmentProvider packageFragmentProvider = createBuiltInPackageFragmentProvider(
|
PackageFragmentProvider packageFragmentProvider = new BuiltInsLoaderImpl().createBuiltInPackageFragmentProvider(
|
||||||
storageManager, builtInsModule, BUILT_INS_PACKAGE_FQ_NAMES,
|
storageManager, builtInsModule, BUILT_INS_PACKAGE_FQ_NAMES,
|
||||||
Collections.singletonList(new BuiltInFictitiousFunctionClassFactory(storageManager, builtInsModule)),
|
Collections.singletonList(new BuiltInFictitiousFunctionClassFactory(storageManager, builtInsModule)),
|
||||||
PlatformDependentDeclarationFilter.All.INSTANCE,
|
PlatformDependentDeclarationFilter.All.INSTANCE,
|
||||||
|
|||||||
+41
-39
@@ -29,44 +29,46 @@ import org.jetbrains.kotlin.serialization.deserialization.*
|
|||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
|
||||||
fun createBuiltInPackageFragmentProvider(
|
class BuiltInsLoaderImpl {
|
||||||
storageManager: StorageManager,
|
fun createBuiltInPackageFragmentProvider(
|
||||||
module: ModuleDescriptor,
|
storageManager: StorageManager,
|
||||||
packageFqNames: Set<FqName>,
|
module: ModuleDescriptor,
|
||||||
classDescriptorFactories: Iterable<ClassDescriptorFactory>,
|
packageFqNames: Set<FqName>,
|
||||||
platformDependentDeclarationFilter: PlatformDependentDeclarationFilter,
|
classDescriptorFactories: Iterable<ClassDescriptorFactory>,
|
||||||
additionalClassPartsProvider: AdditionalClassPartsProvider = AdditionalClassPartsProvider.None,
|
platformDependentDeclarationFilter: PlatformDependentDeclarationFilter,
|
||||||
loadResource: (String) -> InputStream?
|
additionalClassPartsProvider: AdditionalClassPartsProvider = AdditionalClassPartsProvider.None,
|
||||||
): PackageFragmentProvider {
|
loadResource: (String) -> InputStream?
|
||||||
val packageFragments = packageFqNames.map { fqName ->
|
): PackageFragmentProvider {
|
||||||
val resourcePath = BuiltInSerializerProtocol.getBuiltInsFilePath(fqName)
|
val packageFragments = packageFqNames.map { fqName ->
|
||||||
val inputStream = loadResource(resourcePath) ?: throw IllegalStateException("Resource not found in classpath: $resourcePath")
|
val resourcePath = BuiltInSerializerProtocol.getBuiltInsFilePath(fqName)
|
||||||
BuiltInsPackageFragmentImpl(fqName, storageManager, module, inputStream)
|
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
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user