diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt index 0e0e596aa4b..dbf4a46b0f0 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt @@ -23,10 +23,10 @@ import org.jetbrains.kotlin.frontend.di.configureModule import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents import org.jetbrains.kotlin.frontend.java.di.configureJavaSpecificComponents import org.jetbrains.kotlin.frontend.java.di.initializeJavaSpecificComponents +import org.jetbrains.kotlin.idea.klib.CachingIdeKlibMetadataLoader import org.jetbrains.kotlin.idea.project.IdeaEnvironment import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.konan.util.KlibMetadataFactories -import org.jetbrains.kotlin.library.metadata.parseModuleHeader import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl import org.jetbrains.kotlin.load.kotlin.PackagePartProvider @@ -134,7 +134,7 @@ class CompositeResolverForModuleFactory( val library = moduleInfo.resolvedKotlinLibrary val languageVersionSettings = container.get() - val packageFragmentNames = parseModuleHeader(library.moduleHeaderData).packageFragmentNameList + val packageFragmentNames = CachingIdeKlibMetadataLoader.loadModuleHeader(library).packageFragmentNameList val metadataFactories = KlibMetadataFactories( { DefaultBuiltIns.Instance }, @@ -150,7 +150,7 @@ class CompositeResolverForModuleFactory( klibMetadataProvider = klibMetadataModuleDescriptorFactory.createPackageFragmentProvider( library, - packageAccessHandler = null, + packageAccessHandler = CachingIdeKlibMetadataLoader, packageFragmentNames = packageFragmentNames, storageManager = moduleContext.storageManager, moduleDescriptor = moduleDescriptor, diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/klib/CachingIdeKlibMetadataLoader.kt similarity index 93% rename from idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt rename to idea/idea-analysis/src/org/jetbrains/kotlin/idea/klib/CachingIdeKlibMetadataLoader.kt index da2735c2b85..d83a9848e77 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/klib/CachingIdeKlibMetadataLoader.kt @@ -3,20 +3,19 @@ * 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.ide.konan +package org.jetbrains.kotlin.idea.klib import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.PathUtil -import org.jetbrains.kotlin.idea.klib.KlibLoadingMetadataCache +import org.jetbrains.kotlin.konan.file.File as KFile import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.impl.KotlinLibraryImpl import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.library.metadata.PackageAccessHandler import org.jetbrains.kotlin.metadata.ProtoBuf -import org.jetbrains.kotlin.konan.file.File as KFile -internal object CachingIdeKonanLibraryMetadataLoader : PackageAccessHandler { +object CachingIdeKlibMetadataLoader : PackageAccessHandler { override fun loadModuleHeader(library: KotlinLibrary): KlibMetadataProtoBuf.Header { val virtualFile = getVirtualFile(library, library.moduleHeaderFile) return virtualFile?.let { cache.getCachedModuleHeader(virtualFile) } ?: KlibMetadataProtoBuf.Header.getDefaultInstance() 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 e7b3c7044c6..d2f16c84ccf 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 @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.idea.caches.project.SdkInfo import org.jetbrains.kotlin.idea.caches.project.lazyClosure import org.jetbrains.kotlin.idea.caches.resolve.BuiltInsCacheKey import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider +import org.jetbrains.kotlin.idea.klib.* import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.library.isInterop @@ -44,10 +45,6 @@ import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.library.metadata.NullFlexibleTypeDeserializer import org.jetbrains.kotlin.serialization.konan.impl.KlibMetadataModuleDescriptorFactoryImpl import org.jetbrains.kotlin.storage.StorageManager -import org.jetbrains.kotlin.idea.klib.getCompatibilityInfo -import org.jetbrains.kotlin.idea.klib.readSafe -import org.jetbrains.kotlin.idea.klib.AbstractKlibLibraryInfo -import org.jetbrains.kotlin.idea.klib.isKlibLibraryRootForPlatform class NativePlatformKindResolution : IdePlatformKindResolution { @@ -102,17 +99,16 @@ class NativePlatformKindResolution : IdePlatformKindResolution { val library = (moduleInfo as? NativeKlibLibraryInfo)?.resolvedKotlinLibrary ?: return null if (!library.getCompatibilityInfo().isCompatible) return null - val libraryProto = CachingIdeKonanLibraryMetadataLoader.loadModuleHeader(library) - val deserializationConfiguration = CompilerDeserializationConfiguration(languageVersionSettings) + val packageFragmentNames = CachingIdeKlibMetadataLoader.loadModuleHeader(library).packageFragmentNameList return NativeFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( - library, - CachingIdeKonanLibraryMetadataLoader, - libraryProto.packageFragmentNameList, - storageManager, - moduleDescriptor, - deserializationConfiguration, - null + library = library, + packageAccessHandler = CachingIdeKlibMetadataLoader, + packageFragmentNames = packageFragmentNames, + storageManager = storageManager, + moduleDescriptor = moduleDescriptor, + configuration = CompilerDeserializationConfiguration(languageVersionSettings), + compositePackageFragmentAddend = null ) }