From 6bc01f031c87893bab4c37ab88b63e3bfdf67788 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Fri, 3 Dec 2021 14:40:53 +0300 Subject: [PATCH] JVM_IR: remove dependency of JvmFileFacadeClass on stub generator --- .../kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt | 4 +++- .../org/jetbrains/kotlin/backend/jvm/JvmFileFacadeClass.kt | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) 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 fd25a506c3d..f8d33e744f2 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 @@ -106,7 +106,9 @@ open class JvmGeneratorExtensionsImpl( if (deserializedSource.facadeClassName != null) IrDeclarationOrigin.JVM_MULTIFILE_CLASS else IrDeclarationOrigin.FILE_CLASS, facadeName.fqNameForTopLevelClassMaybeWithDollars.shortName(), deserializedSource, - stubGenerator + deserializeIr = { facade -> + stubGenerator.extensions.deserializeClass(facade, stubGenerator, facade.parent, allowErrorNodes = false) + } ).also { it.createParameterDeclarations() classNameOverride[it] = facadeName diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmFileFacadeClass.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmFileFacadeClass.kt index 8f3def3da73..2962b86d15f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmFileFacadeClass.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmFileFacadeClass.kt @@ -7,10 +7,10 @@ package org.jetbrains.kotlin.backend.jvm import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET +import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl -import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator import org.jetbrains.kotlin.ir.util.DeserializableClass import org.jetbrains.kotlin.name.Name @@ -18,7 +18,7 @@ class JvmFileFacadeClass( origin: IrDeclarationOrigin, name: Name, source: SourceElement, - private val stubGenerator: DeclarationStubGenerator + private val deserializeIr: (IrClass) -> Boolean, ) : IrClassImpl( UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, IrClassSymbolImpl(), name, ClassKind.CLASS, DescriptorVisibilities.PUBLIC, Modality.FINAL, @@ -28,7 +28,6 @@ class JvmFileFacadeClass( private var irLoaded: Boolean? = null override fun loadIr(): Boolean { - return irLoaded ?: - stubGenerator.extensions.deserializeClass(this, stubGenerator, parent, allowErrorNodes = false).also { irLoaded = it } + return irLoaded ?: deserializeIr(this).also { irLoaded = it } } } \ No newline at end of file