[JS SCRIPT] Fix ScriptDependencyCompiler

- Invoke KotlinIrLinker properly
This commit is contained in:
Roman Artemev
2020-05-14 13:33:51 +03:00
committed by romanart
parent 52a93f189e
commit 31af1e6ca7
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.scripting.repl.js
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
@@ -18,7 +17,6 @@ import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.backend.js.emptyLoggingContext
import org.jetbrains.kotlin.ir.backend.js.generateJsCode
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrLinker
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
import org.jetbrains.kotlin.ir.backend.js.utils.NameTables
import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
@@ -54,9 +52,11 @@ class JsScriptDependencyCompiler(
irBuiltIns.functionFactory = functionFactory
val jsLinker = JsIrLinker(null, emptyLoggingContext, irBuiltIns, symbolTable, functionFactory, null)
val moduleFragment = IrModuleFragmentImpl(moduleDescriptor, irBuiltIns)
val irDependencies = dependencies.map { jsLinker.deserializeFullModule(it, it.kotlinLibrary) }
val irProviders = generateTypicalIrProviderList(moduleDescriptor, irBuiltIns, symbolTable, deserializer = jsLinker)
val moduleFragment = irDependencies.last()
val irProviders = listOf(jsLinker)
jsLinker.init(null)
ExternalDependenciesGenerator(symbolTable, irProviders, configuration.languageVersionSettings)
.generateUnboundSymbolsAsDependencies()
@@ -75,8 +75,9 @@ class JsScriptDependencyCompiler(
ExternalDependenciesGenerator(symbolTable, irProviders, configuration.languageVersionSettings)
.generateUnboundSymbolsAsDependencies()
moduleFragment.patchDeclarationParents()
jsLinker.postProcess()
moduleFragment.files += irDependencies.flatMap { it.files }
moduleFragment.files += irDependencies.filter { it !== moduleFragment }.flatMap { it.files }
configuration.put(JSConfigurationKeys.MODULE_KIND, ModuleKind.PLAIN)