JS: move deserialization logic out of createTopDownAnalyzerForJs
Remove code that deserializes unchanged descriptors from `createTopDownAnalyzerForJs`, deserialize in caller instead.
This commit is contained in:
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.container.get
|
|||||||
import org.jetbrains.kotlin.container.useImpl
|
import org.jetbrains.kotlin.container.useImpl
|
||||||
import org.jetbrains.kotlin.container.useInstance
|
import org.jetbrains.kotlin.container.useInstance
|
||||||
import org.jetbrains.kotlin.context.ModuleContext
|
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.CompositePackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||||
@@ -40,7 +41,7 @@ fun createTopDownAnalyzerForJs(
|
|||||||
bindingTrace: BindingTrace,
|
bindingTrace: BindingTrace,
|
||||||
declarationProviderFactory: DeclarationProviderFactory,
|
declarationProviderFactory: DeclarationProviderFactory,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
fallbackMetadata: PackagesWithHeaderMetadata? = null
|
fallbackPackage: PackageFragmentProvider?
|
||||||
): LazyTopDownAnalyzer {
|
): LazyTopDownAnalyzer {
|
||||||
val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatform) {
|
val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatform) {
|
||||||
configureModule(moduleContext, JsPlatform, TargetPlatformVersion.NoVersion, bindingTrace)
|
configureModule(moduleContext, JsPlatform, TargetPlatformVersion.NoVersion, bindingTrace)
|
||||||
@@ -57,10 +58,7 @@ fun createTopDownAnalyzerForJs(
|
|||||||
}.apply {
|
}.apply {
|
||||||
val packagePartProviders = mutableListOf(get<KotlinCodeAnalyzer>().packageFragmentProvider)
|
val packagePartProviders = mutableListOf(get<KotlinCodeAnalyzer>().packageFragmentProvider)
|
||||||
val moduleDescriptor = get<ModuleDescriptorImpl>()
|
val moduleDescriptor = get<ModuleDescriptorImpl>()
|
||||||
if (fallbackMetadata != null) {
|
fallbackPackage?.let { packagePartProviders += it }
|
||||||
packagePartProviders += KotlinJavascriptSerializationUtil.readDescriptors(
|
|
||||||
fallbackMetadata, moduleContext.storageManager, moduleDescriptor, DeserializationConfiguration.Default)
|
|
||||||
}
|
|
||||||
moduleDescriptor.initialize(CompositePackageFragmentProvider(packagePartProviders))
|
moduleDescriptor.initialize(CompositePackageFragmentProvider(packagePartProviders))
|
||||||
}
|
}
|
||||||
return storageComponentContainer.get<LazyTopDownAnalyzer>()
|
return storageComponentContainer.get<LazyTopDownAnalyzer>()
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
||||||
|
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
||||||
|
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil
|
||||||
|
|
||||||
object TopDownAnalyzerFacadeForJS {
|
object TopDownAnalyzerFacadeForJS {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@@ -54,11 +56,15 @@ object TopDownAnalyzerFacadeForJS {
|
|||||||
moduleContext: ModuleContext,
|
moduleContext: ModuleContext,
|
||||||
config: JsConfig
|
config: JsConfig
|
||||||
): JsAnalysisResult {
|
): JsAnalysisResult {
|
||||||
|
val packageFragment = config.configuration[JSConfigurationKeys.FALLBACK_METADATA]?.let {
|
||||||
|
KotlinJavascriptSerializationUtil.readDescriptors(it, moduleContext.storageManager, moduleContext.module,
|
||||||
|
DeserializationConfiguration.Default)
|
||||||
|
}
|
||||||
val analyzerForJs = createTopDownAnalyzerForJs(
|
val analyzerForJs = createTopDownAnalyzerForJs(
|
||||||
moduleContext, trace,
|
moduleContext, trace,
|
||||||
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
|
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
|
||||||
config.configuration.languageVersionSettings,
|
config.configuration.languageVersionSettings,
|
||||||
config.configuration[JSConfigurationKeys.FALLBACK_METADATA]
|
packageFragment
|
||||||
)
|
)
|
||||||
analyzerForJs.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files)
|
analyzerForJs.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files)
|
||||||
return JsAnalysisResult.success(trace, moduleContext.module)
|
return JsAnalysisResult.success(trace, moduleContext.module)
|
||||||
|
|||||||
Reference in New Issue
Block a user