diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt index 7dc38aad3e8..fd80b0f5e35 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt @@ -49,9 +49,7 @@ val BaseKotlinLibrary.uniqueName: String val BaseKotlinLibrary.unresolvedDependencies: List get() = manifestProperties.propertyList(KLIB_PROPERTY_DEPENDS, escapeInQuotes = true) - .map { - UnresolvedLibrary(it, manifestProperties.getProperty("dependency_version_$it")) - } + .map { UnresolvedLibrary(it, manifestProperties.getProperty("dependency_version_$it")) } interface KotlinLibrary : BaseKotlinLibrary, MetadataLibrary, IrLibrary @@ -60,11 +58,11 @@ val KotlinLibrary.isInterop get() = manifestProperties.getProperty(KLIB_PROPERTY_INTEROP) == "true" val KotlinLibrary.packageFqName: String? - get() = manifestProperties.getProperty(org.jetbrains.kotlin.library.KLIB_PROPERTY_PACKAGE) + get() = manifestProperties.getProperty(KLIB_PROPERTY_PACKAGE) val KotlinLibrary.exportForwardDeclarations get() = manifestProperties.propertyList(KLIB_PROPERTY_EXPORT_FORWARD_DECLARATIONS, escapeInQuotes = true) .asSequence() .map { it.trim() } .filter { it.isNotEmpty() } - .toList() \ No newline at end of file + .toList() diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryLayout.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryLayout.kt index 5fe3b1f0988..39a5abf87d7 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryLayout.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryLayout.kt @@ -19,6 +19,9 @@ package org.jetbrains.kotlin.library import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.library.KLIB_METADATA_FILE_EXTENSION_WITH_DOT +const val KLIB_MANIFEST_FILE_NAME = "manifest" +const val KLIB_MODULE_METADATA_FILE_NAME = "module" + /** * This scheme describes the Kotlin/Native Library (KLIB) layout. */ @@ -27,7 +30,7 @@ interface KotlinLibraryLayout { val libraryName: String get() = libDir.path val manifestFile - get() = File(libDir, "manifest") + get() = File(libDir, KLIB_MANIFEST_FILE_NAME) val resourcesDir get() = File(libDir, "resources") } @@ -36,7 +39,7 @@ interface MetadataKotlinLibraryLayout : KotlinLibraryLayout { val metadataDir get() = File(libDir, "linkdata") val moduleHeaderFile - get() = File(metadataDir, "module") + get() = File(metadataDir, KLIB_MODULE_METADATA_FILE_NAME) fun packageFragmentsDir(packageName: String) = File(metadataDir, if (packageName == "") "root_package" else "package_$packageName") diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt index 01255d5e96e..8ee8d8826aa 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt @@ -40,18 +40,12 @@ fun createFileStub(project: Project, text: String): PsiFileStub<*> { fun createLoggingErrorReporter(log: Logger) = LoggingErrorReporter(log) internal object CachingIdeKonanLibraryMetadataLoader : PackageAccessHandler { - override fun loadModuleHeader( - library: KotlinLibrary - ): KlibMetadataProtoBuf.Header { + override fun loadModuleHeader(library: KotlinLibrary): KlibMetadataProtoBuf.Header { val virtualFile = getVirtualFile(library, library.moduleHeaderFile) return cache.getCachedModuleHeader(virtualFile) } - override fun loadPackageFragment( - library: KotlinLibrary, - packageFqName: String, - partName: String - ): ProtoBuf.PackageFragment { + override fun loadPackageFragment(library: KotlinLibrary, packageFqName: String, partName: String): ProtoBuf.PackageFragment { val virtualFile = getVirtualFile(library, library.packageFragmentFile(packageFqName, partName)) return cache.getCachedPackageFragment(virtualFile) } @@ -72,15 +66,13 @@ internal object CachingIdeKonanLibraryMetadataLoader : PackageAccessHandler { private val cache get() = KotlinNativeLoadingMetadataCache.getInstance() - - private val KotlinLibrary.moduleHeaderFile get() = - (this as MetadataLibraryImpl).access.layout.moduleHeaderFile + private val KotlinLibrary.moduleHeaderFile + get() = (this as MetadataLibraryImpl).access.layout.moduleHeaderFile private fun KotlinLibrary.packageFragmentFile(packageFqName: String, partName: String) = (this as MetadataLibraryImpl).access.layout.packageFragmentFile(packageFqName, partName) - private val KotlinLibrary.isZipped get() = - (this as BaseKotlinLibraryImpl).access.layout.isZipped - + private val KotlinLibrary.isZipped + get() = (this as BaseKotlinLibraryImpl).access.layout.isZipped } 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 1334f0c0929..80213fe49d1 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 @@ -43,29 +43,22 @@ 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.deserialization.DeserializationConfiguration import org.jetbrains.kotlin.serialization.konan.impl.KlibMetadataModuleDescriptorFactoryImpl import org.jetbrains.kotlin.storage.StorageManager fun KotlinLibrary.createPackageFragmentProvider( - storageManager: StorageManager, - languageVersionSettings: LanguageVersionSettings, - moduleDescriptor: ModuleDescriptor - ): PackageFragmentProvider { + storageManager: StorageManager, + languageVersionSettings: LanguageVersionSettings, + moduleDescriptor: ModuleDescriptor +): PackageFragmentProvider { - val library = this - - val libraryProto = parseModuleHeader(library.moduleHeaderData) - - //TODO: Is it required somehow? - //val moduleName = Name.special(libraryProto.moduleName) - //val moduleOrigin = DeserializedKonanModuleOrigin(library) + val libraryProto = CachingIdeKonanLibraryMetadataLoader.loadModuleHeader(this) val deserializationConfiguration = CompilerDeserializationConfiguration(languageVersionSettings) return KonanFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( - library, - null, + this, + CachingIdeKonanLibraryMetadataLoader, libraryProto.packageFragmentNameList, storageManager, moduleDescriptor, @@ -156,7 +149,7 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P val languageSettings = IDELanguageSettingsProvider.getLanguageVersionSettings(stdlibInfo, project, isReleaseCoroutines = false) val deserializationConfiguration = CompilerDeserializationConfiguration(languageSettings) - val libraryProto = parseModuleHeader(konanLibrary.moduleHeaderData) + val libraryProto = CachingIdeKonanLibraryMetadataLoader.loadModuleHeader(konanLibrary) val stdlibFragmentProvider = KonanFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( konanLibrary, @@ -173,10 +166,7 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P listOf( stdlibFragmentProvider, (KonanFactories.DefaultDeserializedDescriptorFactory as KlibMetadataModuleDescriptorFactoryImpl) - .createForwardDeclarationHackPackagePartProvider( - storageManager, - builtInsModule - ) + .createForwardDeclarationHackPackagePartProvider(storageManager, builtInsModule) ) ) ) @@ -205,7 +195,8 @@ class NativeLibraryInfo(project: Project, library: Library, root: File) : Librar get() = super.capabilities + mapOf( KlibModuleOrigin.CAPABILITY to this, - ImplicitIntegerCoercion.MODULE_CAPABILITY to nativeLibrary.isInterop + ImplicitIntegerCoercion.MODULE_CAPABILITY to nativeLibrary.isInterop, + NATIVE_LIBRARY_CAPABILITY to nativeLibrary ) override val platform: TargetPlatform diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt index 3451e5fb084..bd6e9e1c1c1 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt @@ -10,7 +10,7 @@ import com.intellij.openapi.components.BaseComponent import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.containers.ContainerUtil.createConcurrentWeakValueMap import org.jetbrains.kotlin.konan.library.KLIB_METADATA_FILE_EXTENSION -import org.jetbrains.kotlin.konan.library.KLIB_MODULE_METADATA_FILE_NAME +import org.jetbrains.kotlin.library.KLIB_MODULE_METADATA_FILE_NAME import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.library.metadata.parseModuleHeader import org.jetbrains.kotlin.library.metadata.parsePackageFragment diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryConstants.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryConstants.kt index 5a99492d72d..32b700e3bdd 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryConstants.kt +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryConstants.kt @@ -15,10 +15,6 @@ const val KLIB_METADATA_FILE_EXTENSION_WITH_DOT = ".$KLIB_METADATA_FILE_EXTENSIO const val KDEFINITIONS_FILE_EXTENSION = "def" -const val KLIB_MODULE_METADATA_FILE_NAME = "module" - -const val KLIB_MANIFEST_FILE_NAME = "manifest" - const val KONAN_STDLIB_NAME = "stdlib" const val KLIB_DIR_NAME = "klib"