From db4cbe7103d884e9d2da778d8c8cd801c9d72d21 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 13 Jul 2020 17:48:07 +0200 Subject: [PATCH] IR: use IrFactory in SymbolTable --- .../cli/cli-js-klib/src/GenerateJsIrKlib.kt | 2 ++ .../jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 7 ++++- .../compiler/KotlinToJVMBytecodeCompiler.kt | 6 ++--- .../kotlin/fir/backend/Fir2IrConverter.kt | 10 +++---- .../kotlin/fir/AbstractFir2IrTextTest.kt | 10 ++++--- .../kotlin/ir/backend/js/compiler.kt | 3 ++- .../backend/js/ir/JsIrDeclarationBuilder.kt | 2 +- .../kotlin/backend/jvm/JvmBackendFacade.kt | 8 ++++-- .../jetbrains/kotlin/backend/wasm/compiler.kt | 5 +++- .../jetbrains/kotlin/ir/util/SymbolTable.kt | 26 ++++++++++--------- .../org/jetbrains/kotlin/ir/util/overrides.kt | 3 +-- .../jetbrains/kotlin/ir/backend/js/klib.kt | 15 ++++++----- .../kotlin/codegen/GenerationUtils.kt | 8 +++--- .../kotlin/ir/AbstractIrGeneratorTestCase.kt | 3 ++- .../kotlin/ir/AbstractIrTextTestCase.kt | 3 ++- .../interpreter/GenerateInterpreterMap.kt | 5 ++-- .../kotlin/benchmarks/GenerateIrRuntime.kt | 7 ++--- .../org/jetbrains/kotlin/js/test/ApiTest.kt | 5 ++-- .../kotlin/js/test/BasicIrBoxTest.kt | 3 ++- .../repl/js/test/JsReplTestAgainstBinaries.kt | 12 ++++----- .../repl/js/test/JsReplTestAgainstKlib.kt | 5 ++-- .../plugin/impl/ScriptJsCompilerImpls.kt | 3 ++- .../scripting/repl/js/JsReplCompiler.kt | 3 ++- 23 files changed, 92 insertions(+), 62 deletions(-) diff --git a/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt b/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt index 967e9744aa6..563083446a8 100644 --- a/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt +++ b/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.psi.KtFile @@ -87,6 +88,7 @@ fun buildKLib( configuration = configuration, allDependencies = allDependencies, friendDependencies = emptyList(), + irFactory = IrFactoryImpl, outputKlibPath = outputPath, nopack = true ) diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index afe0d918796..4873452f092 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -24,13 +24,17 @@ import org.jetbrains.kotlin.cli.common.messages.MessageUtil import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser -import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.config.CommonConfigurationKeys +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.IncrementalCompilation +import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider import org.jetbrains.kotlin.incremental.js.IncrementalNextRoundChecker import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer import org.jetbrains.kotlin.ir.backend.js.* +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.js.config.EcmaVersion import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.js.config.JsConfig @@ -193,6 +197,7 @@ class K2JsIrCompiler : CLICompiler() { configuration = config.configuration, allDependencies = resolvedLibraries, friendDependencies = friendDependencies, + irFactory = IrFactoryImpl, outputKlibPath = outputKlibPath, nopack = arguments.irProduceKlibDir ) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index 098ebeb328d..5758ea74112 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -71,6 +71,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor import org.jetbrains.kotlin.idea.MainFunctionDetector import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.javac.JavacWrapper import org.jetbrains.kotlin.load.kotlin.ModuleVisibilityManager import org.jetbrains.kotlin.modules.Module @@ -378,9 +379,8 @@ object KotlinToJVMBytecodeCompiler { val (moduleFragment, symbolTable, sourceManager, components) = Fir2IrConverter.createModuleFragment( session, resolveTransformer.scopeSession, firFiles, - moduleConfiguration.languageVersionSettings, signaturer = signaturer, - generatorExtensions = JvmGeneratorExtensions(), - mangler = FirJvmKotlinMangler(session) + moduleConfiguration.languageVersionSettings, signaturer, + JvmGeneratorExtensions(), FirJvmKotlinMangler(session), IrFactoryImpl ) performanceManager?.notifyIRTranslationFinished(ktFiles.size, codeLines, debugTargetDescription) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt index d1619a901aa..5cc269b6cbc 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt @@ -7,10 +7,10 @@ package org.jetbrains.kotlin.fir.backend import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator -import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor import org.jetbrains.kotlin.fir.psi @@ -199,13 +199,13 @@ class Fir2IrConverter( scopeSession: ScopeSession, firFiles: List, languageVersionSettings: LanguageVersionSettings, - fakeOverrideMode: FakeOverrideMode = FakeOverrideMode.NORMAL, signaturer: IdSignatureComposer, generatorExtensions: GeneratorExtensions, - mangler: FirMangler + mangler: FirMangler, + irFactory: IrFactory, ): Fir2IrResult { val moduleDescriptor = FirModuleDescriptor(session) - val symbolTable = SymbolTable(signaturer) + val symbolTable = SymbolTable(signaturer, irFactory) val constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable) val typeTranslator = TypeTranslator( symbolTable, @@ -247,7 +247,7 @@ class Fir2IrConverter( converter.processClassHeaders(firFile) } val fakeOverrideGenerator = FakeOverrideGenerator( - session, scopeSession, classifierStorage, declarationStorage, conversionScope, fakeOverrideMode + session, scopeSession, classifierStorage, declarationStorage, conversionScope, FakeOverrideMode.NORMAL ) components.fakeOverrideGenerator = fakeOverrideGenerator val fir2irVisitor = Fir2IrVisitor(converter, components, conversionScope) diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt index cd2e9cc9845..730f4b32a6b 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor import org.jetbrains.kotlin.ir.AbstractIrTextTestCase import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import java.io.File abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() { @@ -87,10 +88,11 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() { return Fir2IrConverter.createModuleFragment( session, resolveTransformer.scopeSession, firFiles, myEnvironment.configuration.languageVersionSettings, - signaturer = signaturer, + signaturer, // TODO: differentiate JVM resolve from other targets, such as JS resolve. - generatorExtensions = JvmGeneratorExtensions(generateFacades = false), - mangler = FirJvmKotlinMangler(session) + JvmGeneratorExtensions(generateFacades = false), + FirJvmKotlinMangler(session), + IrFactoryImpl, ).irModuleFragment } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt index 1cf59ccaefe..11ba0610578 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransf import org.jetbrains.kotlin.ir.backend.js.utils.NameTables import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.StageController +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.stageController import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator import org.jetbrains.kotlin.ir.util.noUnboundLeft @@ -52,7 +53,7 @@ fun compile( stageController = StageController() val (moduleFragment: IrModuleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) = - loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies) + loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies, IrFactoryImpl) val moduleDescriptor = moduleFragment.descriptor diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/JsIrDeclarationBuilder.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/JsIrDeclarationBuilder.kt index b30ceef027f..cc16fe4b3fe 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/JsIrDeclarationBuilder.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/JsIrDeclarationBuilder.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name -// This is a temporary class for migration to IrDeclarationFactory. Usages should be refactored to use the factory directly once possible, +// This is a temporary class for migration to IrFactory. Usages should be refactored to use the factory directly once possible, // since it doesn't add sufficient value on its own. class JsIrDeclarationBuilder { fun buildValueParameter(parent: IrDeclarationParent, name: String, index: Int, type: IrType): IrValueParameter = diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt index 9894a80fa2c..5efbfccb0ff 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt @@ -23,10 +23,14 @@ import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory import org.jetbrains.kotlin.ir.linkage.IrProvider import org.jetbrains.kotlin.ir.types.defaultType -import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator +import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator +import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator @@ -37,7 +41,7 @@ object JvmBackendFacade { val extensions = JvmGeneratorExtensions() val mangler = JvmManglerDesc(MainFunctionDetector(state.bindingContext, state.languageVersionSettings)) val psi2ir = Psi2IrTranslator(state.languageVersionSettings, Psi2IrConfiguration()) - val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), JvmNameProvider) + val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), IrFactoryImpl, JvmNameProvider) val psi2irContext = psi2ir.createGeneratorContext(state.module, state.bindingContext, symbolTable, extensions) val pluginExtensions = IrGenerationExtension.getInstances(state.project) val functionFactory = IrFunctionFactory(psi2irContext.irBuiltIns, symbolTable) diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt index b88bc933805..c0b6fd86102 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.ir.backend.js.MainModule import org.jetbrains.kotlin.ir.backend.js.loadIr +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList import org.jetbrains.kotlin.ir.util.patchDeclarationParents @@ -35,7 +36,9 @@ fun compileWasm( exportedDeclarations: Set = emptySet() ): WasmCompilerResult { val (moduleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) = - loadIr(project, MainModule.SourceFiles(files), analyzer, configuration, allDependencies, friendDependencies) + loadIr( + project, MainModule.SourceFiles(files), analyzer, configuration, allDependencies, friendDependencies, IrFactoryImpl + ) val moduleDescriptor = moduleFragment.descriptor val context = WasmBackendContext(moduleDescriptor, irBuiltIns, symbolTable, moduleFragment, exportedDeclarations, configuration) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt index 693ac26248c..d2dd2d9685a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt @@ -14,14 +14,14 @@ * limitations under the License. */ -@file:Suppress("DEPRECATION") - package org.jetbrains.kotlin.ir.util import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.* +import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl +import org.jetbrains.kotlin.ir.declarations.impl.IrScriptImpl +import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl import org.jetbrains.kotlin.ir.declarations.lazy.IrLazySymbolTable import org.jetbrains.kotlin.ir.descriptors.WrappedDeclarationDescriptor import org.jetbrains.kotlin.ir.descriptors.WrappedFunctionDescriptorWithContainerSource @@ -74,8 +74,9 @@ interface ReferenceSymbolTable { fun leaveScope(owner: IrDeclaration) } -open class SymbolTable( +class SymbolTable( val signaturer: IdSignatureComposer, + val irFactory: IrFactory, val nameProvider: NameProvider = NameProvider.DEFAULT ) : ReferenceSymbolTable { @@ -374,7 +375,7 @@ open class SymbolTable( origin: IrDeclarationOrigin, descriptor: ClassDescriptor ): IrAnonymousInitializer = - IrAnonymousInitializerImpl( + irFactory.createAnonymousInitializer( startOffset, endOffset, origin, IrAnonymousInitializerSymbolImpl(descriptor) ) @@ -524,7 +525,7 @@ open class SymbolTable( fun declareEnumEntry( startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, factory: (IrEnumEntrySymbol) -> IrEnumEntry = { - IrEnumEntryImpl(startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor)) + irFactory.createEnumEntry(startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor)) } ): IrEnumEntry = enumEntrySymbolTable.declare( @@ -581,7 +582,7 @@ open class SymbolTable( type: IrType, visibility: Visibility? = null, fieldFactory: (IrFieldSymbol) -> IrField = { - IrFieldImpl( + irFactory.createField( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), type, visibility ?: it.descriptor.visibility, !it.descriptor.isVar, it.descriptor.isEffectivelyExternal(), it.descriptor.dispatchReceiverParameter == null @@ -630,6 +631,7 @@ open class SymbolTable( val propertyTable = HashMap() override fun referenceProperty(descriptor: PropertyDescriptor, generate: () -> IrProperty): IrProperty = + @Suppress("DEPRECATION") propertyTable.getOrPut(descriptor, generate) private fun createPropertySymbol(descriptor: PropertyDescriptor): IrPropertySymbol { @@ -647,7 +649,7 @@ open class SymbolTable( descriptor: PropertyDescriptor, isDelegated: Boolean = descriptor.isDelegated, propertyFactory: (IrPropertySymbol) -> IrProperty = { symbol -> - IrPropertyImpl( + irFactory.createProperty( startOffset, endOffset, origin, symbol, isDelegated = isDelegated, name = nameProvider.nameForDeclaration(descriptor), visibility = descriptor.visibility, @@ -830,7 +832,7 @@ open class SymbolTable( origin: IrDeclarationOrigin, descriptor: TypeParameterDescriptor, typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter = { - IrTypeParameterImpl( + irFactory.createTypeParameter( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), it.descriptor.index, it.descriptor.isReified, it.descriptor.variance ) @@ -858,7 +860,7 @@ open class SymbolTable( origin: IrDeclarationOrigin, descriptor: TypeParameterDescriptor, typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter = { - IrTypeParameterImpl( + irFactory.createTypeParameter( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), it.descriptor.index, it.descriptor.isReified, it.descriptor.variance ) @@ -890,7 +892,7 @@ open class SymbolTable( type: IrType, varargElementType: IrType? = null, valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter = { - IrValueParameterImpl( + irFactory.createValueParameter( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), descriptor.indexOrMinusOne, type, varargElementType, descriptor.isCrossinline, descriptor.isNoinline ) @@ -968,7 +970,7 @@ open class SymbolTable( descriptor, { IrLocalDelegatedPropertySymbolImpl(descriptor) }, ) { - IrLocalDelegatedPropertyImpl( + irFactory.createLocalDelegatedProperty( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), type, descriptor.isVar ).apply { metadata = MetadataSource.LocalDelegatedProperty(descriptor) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt index c07aabfd71b..d66d046ffea 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.MetadataSource -import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType @ObsoleteDescriptorBasedAPI @@ -22,7 +21,7 @@ fun SymbolTable.declareSimpleFunctionWithOverrides( ) = declareSimpleFunction(descriptor) { with(descriptor) { - IrFunctionImpl( + irFactory.createFunction( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(this), visibility, modality, IrUninitializedType, isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect ).also { declaration -> diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index c865e52923c..911b9be1d69 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrModuleSeria import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.KlibMetadataIncrementalSerializer +import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory @@ -100,6 +101,7 @@ fun generateKLib( configuration: CompilerConfiguration, allDependencies: KotlinLibraryResolveResult, friendDependencies: List, + irFactory: IrFactory, outputKlibPath: String, nopack: Boolean ) { @@ -138,7 +140,7 @@ fun generateKLib( val depsDescriptors = ModulesStructure(project, MainModule.SourceFiles(files), analyzer, configuration, allDependencies, friendDependencies) - val psi2IrContext = runAnalysisAndPreparePsi2Ir(depsDescriptors) + val psi2IrContext = runAnalysisAndPreparePsi2Ir(depsDescriptors, irFactory) val irBuiltIns = psi2IrContext.irBuiltIns val functionFactory = IrFunctionFactory(irBuiltIns, psi2IrContext.symbolTable) irBuiltIns.functionFactory = functionFactory @@ -212,14 +214,15 @@ fun loadIr( analyzer: AbstractAnalyzerWithCompilerReport, configuration: CompilerConfiguration, allDependencies: KotlinLibraryResolveResult, - friendDependencies: List + friendDependencies: List, + irFactory: IrFactory, ): IrModuleInfo { val depsDescriptors = ModulesStructure(project, mainModule, analyzer, configuration, allDependencies, friendDependencies) val deserializeFakeOverrides = configuration.getBoolean(CommonConfigurationKeys.DESERIALIZE_FAKE_OVERRIDES) when (mainModule) { is MainModule.SourceFiles -> { - val psi2IrContext: GeneratorContext = runAnalysisAndPreparePsi2Ir(depsDescriptors) + val psi2IrContext: GeneratorContext = runAnalysisAndPreparePsi2Ir(depsDescriptors, irFactory) val irBuiltIns = psi2IrContext.irBuiltIns val symbolTable = psi2IrContext.symbolTable val functionFactory = IrFunctionFactory(irBuiltIns, symbolTable) @@ -249,7 +252,7 @@ fun loadIr( val moduleDescriptor = depsDescriptors.getModuleDescriptor(mainModule.lib) val mangler = JsManglerDesc val signaturer = IdSignatureDescriptor(mangler) - val symbolTable = SymbolTable(signaturer) + val symbolTable = SymbolTable(signaturer, irFactory) val constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable) val typeTranslator = TypeTranslator( symbolTable, @@ -284,10 +287,10 @@ fun loadIr( } } -private fun runAnalysisAndPreparePsi2Ir(depsDescriptors: ModulesStructure): GeneratorContext { +private fun runAnalysisAndPreparePsi2Ir(depsDescriptors: ModulesStructure, irFactory: IrFactory): GeneratorContext { val (bindingContext, moduleDescriptor) = depsDescriptors.runAnalysis() val psi2Ir = Psi2IrTranslator(depsDescriptors.compilerConfiguration.languageVersionSettings, Psi2IrConfiguration()) - val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc)) + val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc), irFactory) return psi2Ir.createGeneratorContext(moduleDescriptor, bindingContext, symbolTable) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index 890994d8400..3649d3752ae 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -52,6 +52,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.AnalyzingUtils @@ -144,10 +145,11 @@ object GenerationUtils { Fir2IrConverter.createModuleFragment( session, resolveTransformer.scopeSession, firFiles, configuration.languageVersionSettings, - signaturer = IdSignatureDescriptor(JvmManglerDesc()), + IdSignatureDescriptor(JvmManglerDesc()), // TODO: differentiate JVM resolve from other targets, such as JS resolve. - generatorExtensions = JvmGeneratorExtensions(), - mangler = FirJvmKotlinMangler(session) + JvmGeneratorExtensions(), + FirJvmKotlinMangler(session), + IrFactoryImpl, ) val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt index 04503666335..edb960dd126 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.util.NameProvider import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList @@ -141,7 +142,7 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() { val context = psi2ir.createGeneratorContext( moduleDescriptor, bindingContext, - SymbolTable(IdSignatureDescriptor(JsManglerDesc), NameProvider.DEFAULT), + SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl, NameProvider.DEFAULT), generatorExtensions ) val irProviders = generateTypicalIrProviderList( diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt index 5f93d1cd1fc..5d8c4736273 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.* @@ -68,7 +69,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() { val stubGenerator = DeclarationStubGenerator( irModule.descriptor, - SymbolTable(signaturer), // TODO + SymbolTable(signaturer, IrFactoryImpl), // TODO myEnvironment.configuration.languageVersionSettings ) diff --git a/generators/interpreter/GenerateInterpreterMap.kt b/generators/interpreter/GenerateInterpreterMap.kt index 8692d0952a0..ff31c93517d 100644 --- a/generators/interpreter/GenerateInterpreterMap.kt +++ b/generators/interpreter/GenerateInterpreterMap.kt @@ -15,12 +15,13 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil import org.jetbrains.kotlin.ir.declarations.IrFunction +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.types.impl.originalKotlinType import org.jetbrains.kotlin.ir.util.* -import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.storage.LockBasedStorageManager +import org.jetbrains.kotlin.utils.Printer import java.io.File val DESTINATION = File("compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/builtins/IrBuiltInsMapGenerated.kt") @@ -201,7 +202,7 @@ private fun getIrBuiltIns(): IrBuiltIns { override fun composeEnumEntrySignature(descriptor: ClassDescriptor): IdSignature? = null } - val symbolTable = SymbolTable(signaturer) + val symbolTable = SymbolTable(signaturer, IrFactoryImpl) val constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable) val typeTranslator = TypeTranslator(symbolTable, languageSettings, builtIns) constantValueGenerator.typeTranslator = typeTranslator diff --git a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt index dff89f48a9e..6308802ab43 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrModuleSeria import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory import org.jetbrains.kotlin.ir.util.* @@ -447,7 +448,7 @@ class GenerateIrRuntime { private fun doPsi2Ir(files: List, analysisResult: AnalysisResult): IrModuleFragment { val psi2Ir = Psi2IrTranslator(languageVersionSettings, Psi2IrConfiguration()) - val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc)) + val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl) val psi2IrContext = psi2Ir.createGeneratorContext(analysisResult.moduleDescriptor, analysisResult.bindingContext, symbolTable) val irBuiltIns = psi2IrContext.irBuiltIns @@ -507,7 +508,7 @@ class GenerateIrRuntime { private fun doDeserializeIrModule(moduleDescriptor: ModuleDescriptorImpl): DeserializedModuleInfo { val mangler = JsManglerDesc val signaturer = IdSignatureDescriptor(mangler) - val symbolTable = SymbolTable(signaturer) + val symbolTable = SymbolTable(signaturer, IrFactoryImpl) val typeTranslator = TypeTranslator(symbolTable, languageVersionSettings, moduleDescriptor.builtIns).also { it.constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable) } @@ -536,7 +537,7 @@ class GenerateIrRuntime { val moduleDescriptor = doDeserializeModuleMetadata(moduleRef) val mangler = JsManglerDesc val signaturer = IdSignatureDescriptor(mangler) - val symbolTable = SymbolTable(signaturer) + val symbolTable = SymbolTable(signaturer, IrFactoryImpl) val typeTranslator = TypeTranslator(symbolTable, languageVersionSettings, moduleDescriptor.builtIns).also { it.constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable) } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt index 19e45557319..05e549345f1 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.descriptors.impl.EnumEntrySyntheticClassDescriptor import org.jetbrains.kotlin.ir.backend.js.MainModule import org.jetbrains.kotlin.ir.backend.js.jsResolveLibraries import org.jetbrains.kotlin.ir.backend.js.loadIr +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil @@ -26,7 +27,6 @@ import org.jetbrains.kotlin.renderer.* import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.MemberComparator import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPublicApi -import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestWithEnvironment import java.io.File @@ -83,7 +83,8 @@ class ApiTest : KotlinTestWithEnvironment() { AnalyzerWithCompilerReport(configuration), configuration, resolvedLibraries, - listOf() + listOf(), + IrFactoryImpl, ).module.descriptor.packagesSerialized() } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt index 2b2ea7209a7..b1c2bbcabce 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt @@ -11,13 +11,13 @@ import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.js.messageCollectorLogger import org.jetbrains.kotlin.ir.backend.js.* +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.js.facade.MainCallParameters import org.jetbrains.kotlin.js.facade.TranslationUnit import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.parsing.parseBoolean -import org.jetbrains.kotlin.serialization.js.ModuleKind import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull import java.io.File @@ -180,6 +180,7 @@ abstract class BasicIrBoxTest( configuration = config.configuration, allDependencies = resolvedLibraries, friendDependencies = emptyList(), + irFactory = IrFactoryImpl, outputKlibPath = actualOutputFile, nopack = true ) diff --git a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt index 915b154e241..2ebaad90d8c 100644 --- a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt +++ b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.scripting.repl.js.test import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor 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.IrFactoryImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.js.engine.ScriptEngineNashorn import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase @@ -23,9 +24,7 @@ class JsReplTestAgainstBinaries : AbstractJsReplTest() { init { val nameTable = NameTables(emptyList()) - val mangler = JsManglerDesc - val signaturer = IdSignatureDescriptor(mangler) - val compiler = JsScriptDependencyCompiler(environment.configuration, nameTable, SymbolTable(signaturer)) + val compiler = JsScriptDependencyCompiler(environment.configuration, nameTable, createSymbolTable()) val runtimeBinary = compiler.compile(dependencies) dependencyLoader.saveScriptDependencyBinary(runtimeBinary) @@ -34,11 +33,12 @@ class JsReplTestAgainstBinaries : AbstractJsReplTest() { override fun createCompilationState(): JsReplCompilationState { val replState = ReplCodeAnalyzerBase.ResettableAnalyzerState() - val mangler = JsManglerDesc - val signaturer = IdSignatureDescriptor(mangler) - return JsReplCompilationState(ReentrantReadWriteLock(), dependencyLoader.loadNames(), dependencies, replState, SymbolTable(signaturer)) + return JsReplCompilationState(ReentrantReadWriteLock(), dependencyLoader.loadNames(), dependencies, replState, createSymbolTable()) } + private fun createSymbolTable(): SymbolTable = + SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl) + override fun createEvaluationState(): JsEvaluationState { val state = JsEvaluationState(ReentrantReadWriteLock(), ScriptEngineNashorn()) JsReplEvaluator().eval(state, createCompileResult(dependencyLoader.loadScriptDependencyBinary())) diff --git a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt index e4894ae930b..6d0239c18c4 100644 --- a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt +++ b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.util.Disposer import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor 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.IrFactoryImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.js.engine.ScriptEngineNashorn import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase @@ -21,9 +22,7 @@ class JsReplTestAgainstKlib : AbstractJsReplTest() { override fun createCompilationState(): JsReplCompilationState { val nameTables = NameTables(emptyList()) - val mangler = JsManglerDesc - val signaturer = IdSignatureDescriptor(mangler) - val symbolTable = SymbolTable(signaturer) + val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl) val dependencyCompiler = JsScriptDependencyCompiler(environment.configuration, nameTables, symbolTable) val dependencies = readLibrariesFromConfiguration(environment.configuration) dependencyCode = dependencyCompiler.compile(dependencies) diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/ScriptJsCompilerImpls.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/ScriptJsCompilerImpls.kt index e9979c0dc5c..87a021b7a70 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/ScriptJsCompilerImpls.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/ScriptJsCompilerImpls.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.descriptors.ModuleDescriptor 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.IrFactoryImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptCompilerProxy import org.jetbrains.kotlin.scripting.repl.js.JsCompiledScript @@ -22,7 +23,7 @@ import kotlin.script.experimental.api.* class JsScriptCompilerWithDependenciesProxy(private val environment: KotlinCoreEnvironment) : ScriptCompilerProxy { private val nameTables = NameTables(emptyList()) - private val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc)) + private val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl) private val dependencies: List = readLibrariesFromConfiguration(environment.configuration) private val compiler = JsCoreScriptingCompiler(environment, nameTables, symbolTable, dependencies) private var scriptDependencyCompiler: JsScriptDependencyCompiler? = diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCompiler.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCompiler.kt index 4a7325318dc..49553c54c31 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCompiler.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCompiler.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment 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.IrFactoryImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase import java.util.concurrent.locks.ReentrantReadWriteLock @@ -23,7 +24,7 @@ class JsReplCompiler(private val environment: KotlinCoreEnvironment) : ReplCompi NameTables(emptyList()), readLibrariesFromConfiguration(environment.configuration), ReplCodeAnalyzerBase.ResettableAnalyzerState(), - SymbolTable(IdSignatureDescriptor(JsManglerDesc)) + SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl) ) }