Psi2Ir: somewhat simplify Psi2IrTranslator API
Inline some methods only used once, deduplicate usages, rearrange parameters, etc.
This commit is contained in:
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.linkage.IrProvider
|
|||||||
import org.jetbrains.kotlin.ir.types.defaultType
|
import org.jetbrains.kotlin.ir.types.defaultType
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||||
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
|
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
|
||||||
|
|
||||||
@@ -35,21 +36,21 @@ object JvmBackendFacade {
|
|||||||
fun doGenerateFiles(files: Collection<KtFile>, state: GenerationState, phaseConfig: PhaseConfig) {
|
fun doGenerateFiles(files: Collection<KtFile>, state: GenerationState, phaseConfig: PhaseConfig) {
|
||||||
val extensions = JvmGeneratorExtensions()
|
val extensions = JvmGeneratorExtensions()
|
||||||
val mangler = JvmManglerDesc(MainFunctionDetector(state.bindingContext, state.languageVersionSettings))
|
val mangler = JvmManglerDesc(MainFunctionDetector(state.bindingContext, state.languageVersionSettings))
|
||||||
val signaturer = JvmIdSignatureDescriptor(mangler)
|
val psi2ir = Psi2IrTranslator(state.languageVersionSettings, Psi2IrConfiguration())
|
||||||
val psi2ir = Psi2IrTranslator(state.languageVersionSettings, signaturer = signaturer)
|
val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), JvmNameProvider)
|
||||||
val psi2irContext = psi2ir.createGeneratorContext(state.module, state.bindingContext, JvmNameProvider, extensions = extensions)
|
val psi2irContext = psi2ir.createGeneratorContext(state.module, state.bindingContext, symbolTable, extensions)
|
||||||
val pluginExtensions = IrGenerationExtension.getInstances(state.project)
|
val pluginExtensions = IrGenerationExtension.getInstances(state.project)
|
||||||
val functionFactory = IrFunctionFactory(psi2irContext.irBuiltIns, psi2irContext.symbolTable)
|
val functionFactory = IrFunctionFactory(psi2irContext.irBuiltIns, symbolTable)
|
||||||
psi2irContext.irBuiltIns.functionFactory = functionFactory
|
psi2irContext.irBuiltIns.functionFactory = functionFactory
|
||||||
|
|
||||||
val stubGenerator = DeclarationStubGenerator(
|
val stubGenerator = DeclarationStubGenerator(
|
||||||
psi2irContext.moduleDescriptor, psi2irContext.symbolTable, psi2irContext.irBuiltIns.languageVersionSettings, extensions
|
psi2irContext.moduleDescriptor, symbolTable, psi2irContext.irBuiltIns.languageVersionSettings, extensions
|
||||||
)
|
)
|
||||||
val irLinker = JvmIrLinker(
|
val irLinker = JvmIrLinker(
|
||||||
psi2irContext.moduleDescriptor,
|
psi2irContext.moduleDescriptor,
|
||||||
EmptyLoggingContext,
|
EmptyLoggingContext,
|
||||||
psi2irContext.irBuiltIns,
|
psi2irContext.irBuiltIns,
|
||||||
psi2irContext.symbolTable,
|
symbolTable,
|
||||||
functionFactory,
|
functionFactory,
|
||||||
stubGenerator,
|
stubGenerator,
|
||||||
mangler
|
mangler
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.linkage.IrDeserializer
|
import org.jetbrains.kotlin.ir.linkage.IrDeserializer
|
||||||
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
@@ -37,8 +38,7 @@ typealias Psi2IrPostprocessingStep = (IrModuleFragment) -> Unit
|
|||||||
|
|
||||||
class Psi2IrTranslator(
|
class Psi2IrTranslator(
|
||||||
val languageVersionSettings: LanguageVersionSettings,
|
val languageVersionSettings: LanguageVersionSettings,
|
||||||
val configuration: Psi2IrConfiguration = Psi2IrConfiguration(),
|
val configuration: Psi2IrConfiguration,
|
||||||
val signaturer: IdSignatureComposer
|
|
||||||
) {
|
) {
|
||||||
private val postprocessingSteps = SmartList<Psi2IrPostprocessingStep>()
|
private val postprocessingSteps = SmartList<Psi2IrPostprocessingStep>()
|
||||||
|
|
||||||
@@ -46,31 +46,28 @@ class Psi2IrTranslator(
|
|||||||
postprocessingSteps.add(step)
|
postprocessingSteps.add(step)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: used only for test purpose
|
|
||||||
fun generateModule(
|
|
||||||
moduleDescriptor: ModuleDescriptor,
|
|
||||||
ktFiles: Collection<KtFile>,
|
|
||||||
bindingContext: BindingContext,
|
|
||||||
generatorExtensions: GeneratorExtensions,
|
|
||||||
nameProvider: NameProvider = NameProvider.DEFAULT
|
|
||||||
): IrModuleFragment {
|
|
||||||
val context = createGeneratorContext(moduleDescriptor, bindingContext, nameProvider, extensions = generatorExtensions)
|
|
||||||
val irProviders = generateTypicalIrProviderList(
|
|
||||||
moduleDescriptor, context.irBuiltIns, context.symbolTable, extensions = generatorExtensions
|
|
||||||
)
|
|
||||||
return generateModuleFragment(context, ktFiles, irProviders, emptyList())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun createGeneratorContext(
|
fun createGeneratorContext(
|
||||||
moduleDescriptor: ModuleDescriptor,
|
moduleDescriptor: ModuleDescriptor,
|
||||||
bindingContext: BindingContext,
|
bindingContext: BindingContext,
|
||||||
nameProvider: NameProvider = NameProvider.DEFAULT,
|
symbolTable: SymbolTable,
|
||||||
symbolTable: SymbolTable = SymbolTable(signaturer, nameProvider),
|
|
||||||
extensions: GeneratorExtensions = GeneratorExtensions()
|
extensions: GeneratorExtensions = GeneratorExtensions()
|
||||||
): GeneratorContext =
|
): GeneratorContext {
|
||||||
createGeneratorContext(
|
val typeTranslator = TypeTranslator(symbolTable, languageVersionSettings, moduleDescriptor.builtIns, extensions = extensions)
|
||||||
configuration, moduleDescriptor, bindingContext, languageVersionSettings, symbolTable, extensions
|
val constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable)
|
||||||
|
typeTranslator.constantValueGenerator = constantValueGenerator
|
||||||
|
constantValueGenerator.typeTranslator = typeTranslator
|
||||||
|
return GeneratorContext(
|
||||||
|
configuration,
|
||||||
|
moduleDescriptor,
|
||||||
|
bindingContext,
|
||||||
|
languageVersionSettings,
|
||||||
|
symbolTable,
|
||||||
|
extensions,
|
||||||
|
typeTranslator,
|
||||||
|
constantValueGenerator,
|
||||||
|
IrBuiltIns(moduleDescriptor.builtIns, typeTranslator, symbolTable),
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun generateModuleFragment(
|
fun generateModuleFragment(
|
||||||
context: GeneratorContext,
|
context: GeneratorContext,
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.ir.builders.IrGeneratorContext
|
|||||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference
|
import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference
|
||||||
import org.jetbrains.kotlin.ir.util.ConstantValueGenerator
|
import org.jetbrains.kotlin.ir.util.ConstantValueGenerator
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
@@ -22,33 +21,6 @@ import org.jetbrains.kotlin.psi2ir.PsiSourceManager
|
|||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
|
|
||||||
fun createGeneratorContext(
|
|
||||||
configuration: Psi2IrConfiguration,
|
|
||||||
moduleDescriptor: ModuleDescriptor,
|
|
||||||
bindingContext: BindingContext,
|
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
|
||||||
symbolTable: SymbolTable,
|
|
||||||
extensions: GeneratorExtensions
|
|
||||||
): GeneratorContext {
|
|
||||||
val typeTranslator = TypeTranslator(
|
|
||||||
symbolTable, languageVersionSettings, builtIns = moduleDescriptor.builtIns, extensions = extensions
|
|
||||||
)
|
|
||||||
val constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable)
|
|
||||||
typeTranslator.constantValueGenerator = constantValueGenerator
|
|
||||||
constantValueGenerator.typeTranslator = typeTranslator
|
|
||||||
return GeneratorContext(
|
|
||||||
configuration,
|
|
||||||
moduleDescriptor,
|
|
||||||
bindingContext,
|
|
||||||
languageVersionSettings,
|
|
||||||
symbolTable,
|
|
||||||
extensions,
|
|
||||||
typeTranslator,
|
|
||||||
constantValueGenerator,
|
|
||||||
IrBuiltIns(moduleDescriptor.builtIns, typeTranslator, symbolTable)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
class GeneratorContext(
|
class GeneratorContext(
|
||||||
val configuration: Psi2IrConfiguration,
|
val configuration: Psi2IrConfiguration,
|
||||||
val moduleDescriptor: ModuleDescriptor,
|
val moduleDescriptor: ModuleDescriptor,
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport
|
|||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.backend.common.LoggingContext
|
import org.jetbrains.kotlin.backend.common.LoggingContext
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
|
||||||
import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideChecker
|
import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideChecker
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.DeserializationStrategy
|
import org.jetbrains.kotlin.backend.common.serialization.DeserializationStrategy
|
||||||
@@ -57,8 +56,6 @@ import org.jetbrains.kotlin.psi.KtFile
|
|||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext
|
import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions
|
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.createGeneratorContext
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.BindingContextUtils
|
import org.jetbrains.kotlin.resolve.BindingContextUtils
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
@@ -288,18 +285,10 @@ fun loadIr(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun runAnalysisAndPreparePsi2Ir(depsDescriptors: ModulesStructure): GeneratorContext {
|
private fun runAnalysisAndPreparePsi2Ir(depsDescriptors: ModulesStructure): GeneratorContext {
|
||||||
val analysisResult = depsDescriptors.runAnalysis()
|
val (bindingContext, moduleDescriptor) = depsDescriptors.runAnalysis()
|
||||||
val mangler = JsManglerDesc
|
val psi2Ir = Psi2IrTranslator(depsDescriptors.compilerConfiguration.languageVersionSettings, Psi2IrConfiguration())
|
||||||
val signaturer = IdSignatureDescriptor(mangler)
|
val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc))
|
||||||
|
return psi2Ir.createGeneratorContext(moduleDescriptor, bindingContext, symbolTable)
|
||||||
return createGeneratorContext(
|
|
||||||
Psi2IrConfiguration(),
|
|
||||||
analysisResult.moduleDescriptor,
|
|
||||||
analysisResult.bindingContext,
|
|
||||||
depsDescriptors.compilerConfiguration.languageVersionSettings,
|
|
||||||
SymbolTable(signaturer),
|
|
||||||
GeneratorExtensions()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun GeneratorContext.generateModuleFragmentWithPlugins(
|
fun GeneratorContext.generateModuleFragmentWithPlugins(
|
||||||
@@ -308,8 +297,7 @@ fun GeneratorContext.generateModuleFragmentWithPlugins(
|
|||||||
irLinker: IrDeserializer,
|
irLinker: IrDeserializer,
|
||||||
expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>? = null
|
expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>? = null
|
||||||
): IrModuleFragment {
|
): IrModuleFragment {
|
||||||
val signaturer = IdSignatureDescriptor(JsManglerDesc)
|
val psi2Ir = Psi2IrTranslator(languageVersionSettings, configuration)
|
||||||
val psi2Ir = Psi2IrTranslator(languageVersionSettings, configuration, signaturer)
|
|
||||||
|
|
||||||
val extensions = IrGenerationExtension.getInstances(project)
|
val extensions = IrGenerationExtension.getInstances(project)
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
|||||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
|
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
|
import org.jetbrains.kotlin.ir.util.NameProvider
|
||||||
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
|
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
|
||||||
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
@@ -85,11 +88,8 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
|||||||
protected open fun generateIrModule(ignoreErrors: Boolean = false): IrModuleFragment {
|
protected open fun generateIrModule(ignoreErrors: Boolean = false): IrModuleFragment {
|
||||||
assert(myFiles != null) { "myFiles not initialized" }
|
assert(myFiles != null) { "myFiles not initialized" }
|
||||||
assert(myEnvironment != null) { "myEnvironment not initialized" }
|
assert(myEnvironment != null) { "myEnvironment not initialized" }
|
||||||
val mangler = JsManglerDesc
|
val psi2Ir = Psi2IrTranslator(myEnvironment.configuration.languageVersionSettings, Psi2IrConfiguration(ignoreErrors))
|
||||||
val signaturer = IdSignatureDescriptor(mangler)
|
return doGenerateIrModule(psi2Ir)
|
||||||
return doGenerateIrModule(Psi2IrTranslator(myEnvironment.configuration.languageVersionSettings,
|
|
||||||
Psi2IrConfiguration(ignoreErrors),
|
|
||||||
signaturer))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected open fun doGenerateIrModule(psi2IrTranslator: Psi2IrTranslator): IrModuleFragment =
|
protected open fun doGenerateIrModule(psi2IrTranslator: Psi2IrTranslator): IrModuleFragment =
|
||||||
@@ -133,13 +133,21 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
|||||||
ktFilesToAnalyze: List<KtFile>,
|
ktFilesToAnalyze: List<KtFile>,
|
||||||
generatorExtensions: GeneratorExtensions
|
generatorExtensions: GeneratorExtensions
|
||||||
): IrModuleFragment {
|
): IrModuleFragment {
|
||||||
|
val (bindingContext, moduleDescriptor) = analysisResult
|
||||||
if (!psi2ir.configuration.ignoreErrors) {
|
if (!psi2ir.configuration.ignoreErrors) {
|
||||||
analysisResult.throwIfError()
|
analysisResult.throwIfError()
|
||||||
AnalyzingUtils.throwExceptionOnErrors(analysisResult.bindingContext)
|
AnalyzingUtils.throwExceptionOnErrors(bindingContext)
|
||||||
}
|
}
|
||||||
return psi2ir.generateModule(
|
val context = psi2ir.createGeneratorContext(
|
||||||
analysisResult.moduleDescriptor, ktFilesToAnalyze, analysisResult.bindingContext, generatorExtensions
|
moduleDescriptor,
|
||||||
|
bindingContext,
|
||||||
|
SymbolTable(IdSignatureDescriptor(JsManglerDesc), NameProvider.DEFAULT),
|
||||||
|
generatorExtensions
|
||||||
)
|
)
|
||||||
|
val irProviders = generateTypicalIrProviderList(
|
||||||
|
moduleDescriptor, context.irBuiltIns, context.symbolTable, extensions = generatorExtensions
|
||||||
|
)
|
||||||
|
return psi2ir.generateModuleFragment(context, ktFilesToAnalyze, irProviders, emptyList())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,9 +42,9 @@ import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory
|
|||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
||||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||||
import org.jetbrains.kotlin.library.KotlinLibraryVersioning
|
|
||||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||||
|
import org.jetbrains.kotlin.library.KotlinLibraryVersioning
|
||||||
import org.jetbrains.kotlin.library.SerializedIrModule
|
import org.jetbrains.kotlin.library.SerializedIrModule
|
||||||
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
||||||
import org.jetbrains.kotlin.library.impl.KotlinLibraryOnlyIrWriter
|
import org.jetbrains.kotlin.library.impl.KotlinLibraryOnlyIrWriter
|
||||||
@@ -53,8 +53,6 @@ import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStat
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions
|
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.createGeneratorContext
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource
|
import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource
|
||||||
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
||||||
@@ -448,19 +446,9 @@ class GenerateIrRuntime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun doPsi2Ir(files: List<KtFile>, analysisResult: AnalysisResult): IrModuleFragment {
|
private fun doPsi2Ir(files: List<KtFile>, analysisResult: AnalysisResult): IrModuleFragment {
|
||||||
val psi2IrConfiguration = Psi2IrConfiguration()
|
val psi2Ir = Psi2IrTranslator(languageVersionSettings, Psi2IrConfiguration())
|
||||||
val mangler = JsManglerDesc
|
val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc))
|
||||||
val signaturer = IdSignatureDescriptor(mangler)
|
val psi2IrContext = psi2Ir.createGeneratorContext(analysisResult.moduleDescriptor, analysisResult.bindingContext, symbolTable)
|
||||||
val symbolTable = SymbolTable(signaturer)
|
|
||||||
val generatorExtensions = GeneratorExtensions()
|
|
||||||
val psi2IrContext = createGeneratorContext(
|
|
||||||
psi2IrConfiguration,
|
|
||||||
analysisResult.moduleDescriptor,
|
|
||||||
analysisResult.bindingContext,
|
|
||||||
languageVersionSettings,
|
|
||||||
symbolTable,
|
|
||||||
generatorExtensions
|
|
||||||
)
|
|
||||||
|
|
||||||
val irBuiltIns = psi2IrContext.irBuiltIns
|
val irBuiltIns = psi2IrContext.irBuiltIns
|
||||||
val functionFactory = IrFunctionFactory(irBuiltIns, psi2IrContext.symbolTable)
|
val functionFactory = IrFunctionFactory(irBuiltIns, psi2IrContext.symbolTable)
|
||||||
@@ -477,7 +465,7 @@ class GenerateIrRuntime {
|
|||||||
|
|
||||||
val irProviders = listOf(irLinker)
|
val irProviders = listOf(irLinker)
|
||||||
|
|
||||||
val psi2IrTranslator = Psi2IrTranslator(languageVersionSettings, psi2IrContext.configuration, signaturer)
|
val psi2IrTranslator = Psi2IrTranslator(languageVersionSettings, psi2IrContext.configuration)
|
||||||
return psi2IrTranslator.generateModuleFragment(psi2IrContext, files, irProviders, emptyList(), null)
|
return psi2IrTranslator.generateModuleFragment(psi2IrContext, files, irProviders, emptyList(), null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-8
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.scripting.repl.js
|
package org.jetbrains.kotlin.scripting.repl.js
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
|
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
|
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
|
||||||
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
||||||
@@ -18,12 +17,12 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
|||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||||
import org.jetbrains.kotlin.ir.backend.js.generateJsCode
|
import org.jetbrains.kotlin.ir.backend.js.generateJsCode
|
||||||
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.backend.js.utils.NameTables
|
||||||
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
|
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
|
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
|
||||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||||
import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase
|
import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase
|
||||||
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
||||||
@@ -58,12 +57,9 @@ class JsCoreScriptingCompiler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val files = listOf(snippetKtFile)
|
val files = listOf(snippetKtFile)
|
||||||
val module = analysisResult.moduleDescriptor
|
val (bindingContext, module) = analysisResult
|
||||||
val bindingContext = analysisResult.bindingContext
|
val psi2ir = Psi2IrTranslator(environment.configuration.languageVersionSettings, Psi2IrConfiguration())
|
||||||
val mangler = JsManglerDesc
|
val psi2irContext = psi2ir.createGeneratorContext(module, bindingContext, symbolTable)
|
||||||
val signaturer = IdSignatureDescriptor(mangler)
|
|
||||||
val psi2ir = Psi2IrTranslator(environment.configuration.languageVersionSettings, signaturer = signaturer)
|
|
||||||
val psi2irContext = psi2ir.createGeneratorContext(module, bindingContext, symbolTable = symbolTable)
|
|
||||||
val providers = generateTypicalIrProviderList(module, psi2irContext.irBuiltIns, psi2irContext.symbolTable)
|
val providers = generateTypicalIrProviderList(module, psi2irContext.irBuiltIns, psi2irContext.symbolTable)
|
||||||
val irModuleFragment = psi2ir.generateModuleFragment(psi2irContext, files, providers, emptyList(), null) // TODO: deserializer
|
val irModuleFragment = psi2ir.generateModuleFragment(psi2irContext, files, providers, emptyList(), null) // TODO: deserializer
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user