diff --git a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt index 85b3b05b23d..d9d699a38d3 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.container.useImpl import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.context.ModuleContext +import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.frontend.di.configureModule @@ -40,7 +41,7 @@ fun createTopDownAnalyzerForJs( bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory, languageVersionSettings: LanguageVersionSettings, - fallbackMetadata: PackagesWithHeaderMetadata? = null + fallbackPackage: PackageFragmentProvider? ): LazyTopDownAnalyzer { val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatform) { configureModule(moduleContext, JsPlatform, TargetPlatformVersion.NoVersion, bindingTrace) @@ -57,10 +58,7 @@ fun createTopDownAnalyzerForJs( }.apply { val packagePartProviders = mutableListOf(get().packageFragmentProvider) val moduleDescriptor = get() - if (fallbackMetadata != null) { - packagePartProviders += KotlinJavascriptSerializationUtil.readDescriptors( - fallbackMetadata, moduleContext.storageManager, moduleDescriptor, DeserializationConfiguration.Default) - } + fallbackPackage?.let { packagePartProviders += it } moduleDescriptor.initialize(CompositePackageFragmentProvider(packagePartProviders)) } return storageComponentContainer.get() diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt index e8faf899aac..88b9b62a936 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt @@ -30,6 +30,8 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory +import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration +import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil object TopDownAnalyzerFacadeForJS { @JvmStatic @@ -54,11 +56,15 @@ object TopDownAnalyzerFacadeForJS { moduleContext: ModuleContext, config: JsConfig ): JsAnalysisResult { + val packageFragment = config.configuration[JSConfigurationKeys.FALLBACK_METADATA]?.let { + KotlinJavascriptSerializationUtil.readDescriptors(it, moduleContext.storageManager, moduleContext.module, + DeserializationConfiguration.Default) + } val analyzerForJs = createTopDownAnalyzerForJs( moduleContext, trace, FileBasedDeclarationProviderFactory(moduleContext.storageManager, files), config.configuration.languageVersionSettings, - config.configuration[JSConfigurationKeys.FALLBACK_METADATA] + packageFragment ) analyzerForJs.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files) return JsAnalysisResult.success(trace, moduleContext.module)