diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt index 058eafd0e02..19b1287fc1c 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.backend.common.serialization.metadata.metadataVersio import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.functions.functionInterfacePackageFragmentProvider +import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.caches.resolve.IdePlatformKindResolution import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.context.ProjectContext @@ -39,7 +40,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.BuiltInsCacheKey import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME -import org.jetbrains.kotlin.konan.library.KonanFactories +import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.impl.createKotlinLibrary import org.jetbrains.kotlin.library.isInterop @@ -50,23 +51,25 @@ import org.jetbrains.kotlin.platform.konan.KonanPlatforms import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion import org.jetbrains.kotlin.resolve.TargetEnvironment +import org.jetbrains.kotlin.serialization.konan.NullFlexibleTypeDeserializer import org.jetbrains.kotlin.serialization.konan.impl.KlibMetadataModuleDescriptorFactoryImpl import org.jetbrains.kotlin.storage.StorageManager import java.io.IOException +private val NativeFactories = KlibMetadataFactories(::KonanBuiltIns, NullFlexibleTypeDeserializer) + fun KotlinLibrary.createPackageFragmentProvider( storageManager: StorageManager, languageVersionSettings: LanguageVersionSettings, moduleDescriptor: ModuleDescriptor ): PackageFragmentProvider? { - if (safeMetadataVersion?.isCompatible() != true) return null val libraryProto = CachingIdeKonanLibraryMetadataLoader.loadModuleHeader(this) val deserializationConfiguration = CompilerDeserializationConfiguration(languageVersionSettings) - return KonanFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( + return NativeFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( this, CachingIdeKonanLibraryMetadataLoader, libraryProto.packageFragmentNameList, @@ -132,7 +135,7 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P val stdlibInfo = moduleInfo.findNativeStdlib() ?: return DefaultBuiltIns.Instance val konanLibrary = stdlibInfo.getCapability(NativeLibraryInfo.NATIVE_LIBRARY_CAPABILITY)!! - val builtInsModule = KonanFactories.DefaultDescriptorFactory.createDescriptorAndNewBuiltIns( + val builtInsModule = NativeFactories.DefaultDescriptorFactory.createDescriptorAndNewBuiltIns( KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, DeserializedKlibModuleOrigin(konanLibrary), @@ -144,7 +147,7 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P val libraryProto = CachingIdeKonanLibraryMetadataLoader.loadModuleHeader(konanLibrary) - val stdlibFragmentProvider = KonanFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( + val stdlibFragmentProvider = NativeFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( konanLibrary, CachingIdeKonanLibraryMetadataLoader, libraryProto.packageFragmentNameList, @@ -159,7 +162,7 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P listOf( stdlibFragmentProvider, functionInterfacePackageFragmentProvider(storageManager, builtInsModule), - (KonanFactories.DefaultDeserializedDescriptorFactory as KlibMetadataModuleDescriptorFactoryImpl) + (NativeFactories.DefaultDeserializedDescriptorFactory as KlibMetadataModuleDescriptorFactoryImpl) .createForwardDeclarationHackPackagePartProvider(storageManager, builtInsModule) ) ) diff --git a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt index 2e0168adb74..f6e0489d07f 100644 --- a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt +++ b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.descriptors.commonizer.Target import org.jetbrains.kotlin.descriptors.commonizer.konan.NativeModuleForCommonization.DeserializedModule import org.jetbrains.kotlin.descriptors.commonizer.konan.NativeModuleForCommonization.SyntheticModule import org.jetbrains.kotlin.descriptors.commonizer.utils.EmptyDescriptorTable +import org.jetbrains.kotlin.descriptors.commonizer.utils.NativeFactories.DefaultDeserializedDescriptorFactory import org.jetbrains.kotlin.descriptors.commonizer.utils.ResettableClockMark import org.jetbrains.kotlin.descriptors.commonizer.utils.createKotlinNativeForwardDeclarationsModule import org.jetbrains.kotlin.konan.library.* @@ -99,7 +100,7 @@ class NativeDistributionCommonizer( return librariesByTargets.mapValues { (target, libraries) -> val storageManager = LockBasedStorageManager("Target $target") - val rawStdlibModule = KonanFactories.DefaultDeserializedDescriptorFactory.createDescriptorAndNewBuiltIns( + val rawStdlibModule = DefaultDeserializedDescriptorFactory.createDescriptorAndNewBuiltIns( library = stdlib, languageVersionSettings = LanguageVersionSettingsImpl.DEFAULT, storageManager = storageManager, @@ -107,7 +108,7 @@ class NativeDistributionCommonizer( ) val otherModules = libraries.map { library -> - val rawModule = KonanFactories.DefaultDeserializedDescriptorFactory.createDescriptorOptionalBuiltIns( + val rawModule = DefaultDeserializedDescriptorFactory.createDescriptorOptionalBuiltIns( library = library, languageVersionSettings = LanguageVersionSettingsImpl.DEFAULT, storageManager = storageManager, diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanFactories.kt b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/NativeFactories.kt similarity index 58% rename from konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanFactories.kt rename to konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/NativeFactories.kt index d9596669125..5468b2850cd 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanFactories.kt +++ b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/NativeFactories.kt @@ -1,15 +1,12 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.konan.library +package org.jetbrains.kotlin.descriptors.commonizer.utils import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.serialization.konan.NullFlexibleTypeDeserializer -/** - * The default Kotlin/Native factories. - */ -object KonanFactories : KlibMetadataFactories(::KonanBuiltIns, NullFlexibleTypeDeserializer) +object NativeFactories : KlibMetadataFactories(::KonanBuiltIns, NullFlexibleTypeDeserializer) diff --git a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/moduleDescriptor.kt b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/moduleDescriptor.kt index 7a79dacd712..5a7135a6f78 100644 --- a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/moduleDescriptor.kt +++ b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/moduleDescriptor.kt @@ -9,10 +9,10 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassifierDescriptorWithTypeParameters import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.commonizer.utils.NativeFactories.DefaultDeserializedDescriptorFactory +import org.jetbrains.kotlin.descriptors.commonizer.utils.NativeFactories.createDefaultKonanResolvedModuleDescriptorsFactory import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.incremental.components.LookupLocation -import org.jetbrains.kotlin.konan.library.KonanFactories.DefaultDeserializedDescriptorFactory -import org.jetbrains.kotlin.konan.library.KonanFactories.createDefaultKonanResolvedModuleDescriptorsFactory import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.serialization.konan.impl.KlibResolvedModuleDescriptorsFactoryImpl import org.jetbrains.kotlin.storage.StorageManager