From ec9d929532d48f533447104d9894692bec727878 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Sat, 11 Jun 2022 14:11:46 +0200 Subject: [PATCH] Remove dependency of fir2ir:jvm-backend on backend.jvm.entrypoint Extract JvmIrDeserializer(Impl), similarly to the existing JvmIrSerializer(Impl). Remove `allowErrorNodes` which is always false anyway. --- .../FirKotlinToJvmBytecodeCompiler.kt | 4 +- .../jvm/compiler/pipeline/compilerPipeline.kt | 4 +- .../fir/fir2ir/jvm-backend/build.gradle.kts | 1 - .../fir/backend/jvm/JvmFir2IrExtensions.kt | 39 ++++++------------- .../IncrementalFirJvmCompilerRunner.kt | 3 +- .../jetbrains/kotlin/backend/jvm/IrUtil.kt | 14 ------- .../backend/jvm/JvmGeneratorExtensionsImpl.kt | 24 ++---------- .../backend/jvm/JvmIrDeserializerImpl.kt | 38 ++++++++++++++++++ .../kotlin/backend/jvm/JvmIrDeserializer.kt | 21 ++++++++++ .../ir/declarations/lazy/IrLazyClass.kt | 4 +- .../kotlin/ir/util/StubGeneratorExtensions.kt | 1 - .../deserializeLazyDeclarations.kt | 5 +-- .../frontend/fir/Fir2IrResultsConverter.kt | 5 ++- .../kotlin/codegen/GenerationUtils.kt | 4 +- 14 files changed, 92 insertions(+), 75 deletions(-) delete mode 100644 compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/IrUtil.kt create mode 100644 compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializerImpl.kt create mode 100644 compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializer.kt diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index c97be85f9c3..4d87c876d17 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.asJava.FilteredJvmDiagnostics import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory +import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl import org.jetbrains.kotlin.cli.common.CLICompiler import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CommonCompilerPerformanceManager @@ -52,6 +53,7 @@ import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.types.isArrayType import org.jetbrains.kotlin.fir.types.isString import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.modules.Module @@ -165,7 +167,7 @@ object FirKotlinToJvmBytecodeCompiler { performanceManager?.notifyGenerationStarted() performanceManager?.notifyIRTranslationStarted() - val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration) + val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler) val fir2IrResult = firResult.session.convertToIr(firResult.scopeSession, firResult.fir, fir2IrExtensions, irGenerationExtensions) performanceManager?.notifyIRTranslationFinished() diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt index 6bb92330c8e..3f015426e14 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.KtVirtualFileSourceFile import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory +import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CommonCompilerPerformanceManager import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots @@ -60,6 +61,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.session.FirSessionFactory import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.javac.JavacWrapper import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory import org.jetbrains.kotlin.load.kotlin.PackagePartProvider @@ -185,7 +187,7 @@ fun convertAnalyzedFirToIr( analysisResults: ModuleCompilerAnalyzedOutput, environment: ModuleCompilerEnvironment ): ModuleCompilerIrBackendInput { - val extensions = JvmFir2IrExtensions(input.configuration) + val extensions = JvmFir2IrExtensions(input.configuration, JvmIrDeserializerImpl(), JvmIrMangler) // fir2ir val irGenerationExtensions = diff --git a/compiler/fir/fir2ir/jvm-backend/build.gradle.kts b/compiler/fir/fir2ir/jvm-backend/build.gradle.kts index b0befd40b3e..b2cc17fd004 100644 --- a/compiler/fir/fir2ir/jvm-backend/build.gradle.kts +++ b/compiler/fir/fir2ir/jvm-backend/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { compileOnly(project(":compiler:ir.tree.impl")) compileOnly(project(":compiler:backend")) compileOnly(project(":compiler:backend.jvm")) - compileOnly(project(":compiler:backend.jvm.entrypoint")) api(project(":compiler:ir.serialization.common")) compileOnly(intellijCore()) diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt index 965c50efef6..f8d611cb71a 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.backend.jvm import org.jetbrains.kotlin.backend.common.serialization.signature.PublicIdSignatureComputer import org.jetbrains.kotlin.backend.jvm.* -import org.jetbrains.kotlin.backend.jvm.serialization.deserializeFromByteArray import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.JvmSerializeIrMode @@ -15,24 +14,21 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions import org.jetbrains.kotlin.ir.IrBuiltIns -import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol -import org.jetbrains.kotlin.ir.util.SymbolTable -import org.jetbrains.kotlin.ir.util.constructors -import org.jetbrains.kotlin.ir.util.createParameterDeclarations -import org.jetbrains.kotlin.ir.util.createSpecialAnnotationClass +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.kotlin.FacadeClassSource -import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource -import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.jvm.JvmClassName -class JvmFir2IrExtensions(configuration: CompilerConfiguration) : Fir2IrExtensions, JvmGeneratorExtensions { - +class JvmFir2IrExtensions( + configuration: CompilerConfiguration, + private val irDeserializer: JvmIrDeserializer, + private val mangler: KotlinMangler.IrMangler, +) : Fir2IrExtensions, JvmGeneratorExtensions { override val classNameOverride: MutableMap = mutableMapOf() override val cachedFields = CachedFieldsForObjectInstances(IrFactoryImpl, configuration.languageVersionSettings) @@ -62,7 +58,7 @@ class JvmFir2IrExtensions(configuration: CompilerConfiguration) : Fir2IrExtensio } override fun registerDeclarations(symbolTable: SymbolTable) { - val signatureComputer = PublicIdSignatureComputer(JvmIrMangler) + val signatureComputer = PublicIdSignatureComputer(mangler) specialAnnotationConstructors.forEach { constructor -> symbolTable.declareConstructorWithSignature(signatureComputer.composePublicIdSignature(constructor, false), constructor.symbol) } @@ -86,21 +82,8 @@ class JvmFir2IrExtensions(configuration: CompilerConfiguration) : Fir2IrExtensio } } - override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean { - with(components) { - val serializedIr = when (val source = irClass.source) { - is KotlinJvmBinarySourceElement -> source.binaryClass.classHeader.serializedIr - is JvmPackagePartSource -> source.knownJvmBinaryClass?.classHeader?.serializedIr - else -> null - } ?: return false - deserializeFromByteArray( - serializedIr, - irBuiltIns, symbolTable, irProviders, - irClass, - JvmIrTypeSystemContext(irBuiltIns), allowErrorNodes = false - ) - irClass.handleJvmStaticInSingletonObjects(irBuiltIns, cachedFields) - return true - } - } + override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean = + irDeserializer.deserializeTopLevelClass( + irClass, components.irBuiltIns, components.symbolTable, components.irProviders, this + ) } diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt index 4e60e18f4f3..f3ce762749d 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.KtIoFileSourceFile import org.jetbrains.kotlin.KtSourceFile import org.jetbrains.kotlin.KtVirtualFileSourceFile import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS import org.jetbrains.kotlin.build.report.BuildReporter @@ -268,7 +269,7 @@ class IncrementalFirJvmCompilerRunner( performanceManager?.notifyGenerationStarted() performanceManager?.notifyIRTranslationStarted() - val extensions = JvmFir2IrExtensions(configuration) + val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) val irGenerationExtensions = (projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty() val signaturer = JvmIdSignatureDescriptor(JvmDescriptorMangler(null)) diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/IrUtil.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/IrUtil.kt deleted file mode 100644 index a70bcbdd1b3..00000000000 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/IrUtil.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.backend.jvm - -import org.jetbrains.kotlin.backend.jvm.lower.SingletonObjectJvmStaticTransformer -import org.jetbrains.kotlin.ir.IrBuiltIns -import org.jetbrains.kotlin.ir.declarations.IrClass - -fun IrClass.handleJvmStaticInSingletonObjects(irBuiltIns: IrBuiltIns, cachedFields: CachedFieldsForObjectInstances) { - transform(SingletonObjectJvmStaticTransformer(irBuiltIns, cachedFields), null) -} \ No newline at end of file diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt index 73198b6188d..8e5d7deb6bb 100644 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.backend.jvm import org.jetbrains.kotlin.backend.common.serialization.signature.PublicIdSignatureComputer -import org.jetbrains.kotlin.backend.jvm.serialization.deserializeFromByteArray import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.JvmSerializeIrMode @@ -31,8 +30,6 @@ import org.jetbrains.kotlin.load.java.descriptors.getParentJavaStaticClassScope import org.jetbrains.kotlin.load.java.sam.JavaSingleAbstractMethodUtils import org.jetbrains.kotlin.load.java.typeEnhancement.hasEnhancedNullability import org.jetbrains.kotlin.load.kotlin.FacadeClassSource -import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource -import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtPureClassOrObject import org.jetbrains.kotlin.psi.psiUtil.pureEndOffset @@ -103,7 +100,7 @@ open class JvmGeneratorExtensionsImpl( if (deserializedSource.facadeClassName != null) IrDeclarationOrigin.JVM_MULTIFILE_CLASS else IrDeclarationOrigin.FILE_CLASS, facadeName.fqNameForTopLevelClassMaybeWithDollars.shortName(), deserializedSource, - deserializeIr = { facade -> deserializeClass(facade, stubGenerator, facade.parent, allowErrorNodes = false) } + deserializeIr = { facade -> deserializeClass(facade, stubGenerator, facade.parent) } ).also { it.createParameterDeclarations() classNameOverride[it] = facadeName @@ -114,22 +111,9 @@ open class JvmGeneratorExtensionsImpl( irClass: IrClass, stubGenerator: DeclarationStubGenerator, parent: IrDeclarationParent, - allowErrorNodes: Boolean - ): Boolean { - val serializedIr = when (val source = irClass.source) { - is KotlinJvmBinarySourceElement -> source.binaryClass.classHeader.serializedIr - is JvmPackagePartSource -> source.knownJvmBinaryClass?.classHeader?.serializedIr - else -> null - } ?: return false - deserializeFromByteArray( - serializedIr, - stubGenerator.irBuiltIns, stubGenerator.symbolTable, listOf(stubGenerator), - irClass, - JvmIrTypeSystemContext(stubGenerator.irBuiltIns), allowErrorNodes - ) - irClass.handleJvmStaticInSingletonObjects(stubGenerator.irBuiltIns, cachedFields) - return true - } + ): Boolean = JvmIrDeserializerImpl().deserializeTopLevelClass( + irClass, stubGenerator.irBuiltIns, stubGenerator.symbolTable, listOf(stubGenerator), this + ) override fun isPropertyWithPlatformField(descriptor: PropertyDescriptor): Boolean = descriptor.hasJvmFieldAnnotation() diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializerImpl.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializerImpl.kt new file mode 100644 index 00000000000..5c92f6acb9c --- /dev/null +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializerImpl.kt @@ -0,0 +1,38 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.backend.jvm + +import org.jetbrains.kotlin.backend.jvm.lower.SingletonObjectJvmStaticTransformer +import org.jetbrains.kotlin.backend.jvm.serialization.deserializeFromByteArray +import org.jetbrains.kotlin.ir.IrBuiltIns +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.linkage.IrProvider +import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource +import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement + +class JvmIrDeserializerImpl : JvmIrDeserializer { + override fun deserializeTopLevelClass( + irClass: IrClass, + irBuiltIns: IrBuiltIns, + symbolTable: SymbolTable, + irProviders: List, + extensions: JvmGeneratorExtensions, + ): Boolean { + val serializedIr = when (val source = irClass.source) { + is KotlinJvmBinarySourceElement -> source.binaryClass.classHeader.serializedIr + is JvmPackagePartSource -> source.knownJvmBinaryClass?.classHeader?.serializedIr + else -> null + } ?: return false + deserializeFromByteArray( + serializedIr, irBuiltIns, symbolTable, irProviders, irClass, JvmIrTypeSystemContext(irBuiltIns) + ) + + irClass.transform(SingletonObjectJvmStaticTransformer(irBuiltIns, extensions.cachedFields), null) + + return true + } +} diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializer.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializer.kt new file mode 100644 index 00000000000..6724bb15d9c --- /dev/null +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrDeserializer.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.backend.jvm + +import org.jetbrains.kotlin.ir.IrBuiltIns +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.linkage.IrProvider +import org.jetbrains.kotlin.ir.util.SymbolTable + +interface JvmIrDeserializer { + fun deserializeTopLevelClass( + irClass: IrClass, + irBuiltIns: IrBuiltIns, + symbolTable: SymbolTable, + irProviders: List, + extensions: JvmGeneratorExtensions, + ): Boolean +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt index 9e333190b36..0f57692217d 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt @@ -120,7 +120,7 @@ class IrLazyClass( override fun loadIr(): Boolean { assert(parent is IrPackageFragment) - return irLoaded ?: - stubGenerator.extensions.deserializeClass(this, stubGenerator, parent, allowErrorNodes = false).also { irLoaded = it } + return irLoaded + ?: stubGenerator.extensions.deserializeClass(this, stubGenerator, parent).also { irLoaded = it } } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt index 32b8de02ffc..93602c04912 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt @@ -51,7 +51,6 @@ open class StubGeneratorExtensions { irClass: IrClass, stubGenerator: DeclarationStubGenerator, parent: IrDeclarationParent, - allowErrorNodes: Boolean, ): Boolean = false open val enhancedNullability: EnhancedNullability diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt index d4b93e13334..ce0ec745bc6 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.backend.common.serialization.* import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer import org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler @@ -43,7 +43,6 @@ fun deserializeFromByteArray( irProviders: List, toplevelParent: IrClass, typeSystemContext: IrTypeSystemContext, - allowErrorNodes: Boolean, ) { val irProto = JvmIr.ClassOrFile.parseFrom(byteArray.codedInputStream) val irLibraryFile = IrLibraryFileFromAnnotation( @@ -79,7 +78,7 @@ fun deserializeFromByteArray( // Patching will be needed. val deserializer = IrDeclarationDeserializer( irBuiltIns, symbolTable, lazyIrFactory, irLibraryFile, toplevelParent, - allowErrorNodes = allowErrorNodes, + allowErrorNodes = false, deserializeInlineFunctions = true, deserializeBodies = true, symbolDeserializer, diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt index 0907b4abc80..155b03157d3 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.test.frontend.fir -import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory +import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions import org.jetbrains.kotlin.fir.psi +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory @@ -42,7 +43,7 @@ class Fir2IrResultsConverter( val compilerConfigurationProvider = testServices.compilerConfigurationProvider val configuration = compilerConfigurationProvider.getCompilerConfiguration(module) - val fir2IrExtensions = JvmFir2IrExtensions(configuration) + val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) val (irModuleFragment, components) = inputArtifact.firAnalyzerFacade.convertToIr(fir2IrExtensions) val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index 4ea60ca55fa..55997ad6507 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory +import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector @@ -34,6 +35,7 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions import org.jetbrains.kotlin.fir.createSessionForTests import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.AnalyzingUtils @@ -113,7 +115,7 @@ object GenerationUtils { emptyList(), IrGenerationExtension.getInstances(project) ) - val fir2IrExtensions = JvmFir2IrExtensions(configuration) + val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) val (moduleFragment, components) = firAnalyzerFacade.convertToIr(fir2IrExtensions) val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext