diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt index f1b39637e45..6f3187f4802 100644 --- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt +++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt @@ -3,6 +3,11 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +// This file was generated automatically. See compiler/ir/ir.tree/tree-generator/ReadMe.md. +// DO NOT MODIFY IT MANUALLY. + +@file:Suppress("DuplicatedCode") + package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -15,18 +20,19 @@ import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrSymbol -@OptIn(ObsoleteDescriptorBasedAPI::class) class IrErrorDeclarationImpl @IrImplementationDetail constructor( override val startOffset: Int, override val endOffset: Int, - override val factory: IrFactory, override var origin: IrDeclarationOrigin, + override val factory: IrFactory, ) : IrErrorDeclaration() { - override val symbol: IrSymbol - get() = error("Should never be called") + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override lateinit var descriptor: DeclarationDescriptor override lateinit var parent: IrDeclarationParent - override var annotations: List = emptyList() + + override val symbol: IrSymbol + get() = error("Should never be called") } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt index d4428c162e6..1c2b13a6449 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrImplementationDetail +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor import org.jetbrains.kotlin.ir.expressions.IrBlockBody @@ -134,6 +135,7 @@ abstract class AbstractIrFactoryImpl : IrFactory { factory = this ) + @OptIn(ObsoleteDescriptorBasedAPI::class) override fun createErrorDeclaration( startOffset: Int, endOffset: Int, diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt index eb09f131895..ac2def2447b 100644 --- a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt +++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt @@ -1,25 +1,18 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 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.ir.generator -import org.jetbrains.kotlin.generators.tree.ArbitraryImportable -import org.jetbrains.kotlin.generators.tree.ImplementationKind -import org.jetbrains.kotlin.generators.tree.ClassRef -import org.jetbrains.kotlin.generators.tree.ImportCollector -import org.jetbrains.kotlin.generators.tree.StandardTypes -import org.jetbrains.kotlin.generators.tree.Visibility +import org.jetbrains.kotlin.generators.tree.* import org.jetbrains.kotlin.generators.tree.printer.FunctionParameter import org.jetbrains.kotlin.generators.tree.printer.VariableKind import org.jetbrains.kotlin.generators.tree.printer.printFunctionWithBlockBody import org.jetbrains.kotlin.generators.tree.printer.printPropertyDeclaration import org.jetbrains.kotlin.ir.generator.config.AbstractIrTreeImplementationConfigurator import org.jetbrains.kotlin.ir.generator.model.Element -import org.jetbrains.kotlin.ir.generator.model.Implementation import org.jetbrains.kotlin.ir.generator.model.ListField -import org.jetbrains.kotlin.utils.SmartPrinter object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() { override fun configure(model: Model): Unit = with(IrTree) { @@ -117,7 +110,13 @@ object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() { } impl(errorDeclaration) { - implementation.doPrint = false + implementation.bindOwnedSymbol = false + default("symbol") { + value = "error(\"Should never be called\")" + withGetter = true + } + isMutable("descriptor") + isLateinit("descriptor") } impl(externalPackageFragment) { @@ -130,6 +129,7 @@ object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() { } private fun ImplementationContext.configureDeclarationWithLateBindinig(symbolType: ClassRef<*>) { + implementation.bindOwnedSymbol = false default("isBound") { value = "_symbol != null" withGetter = true @@ -201,7 +201,10 @@ object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() { default(it, "ArrayList(2)") } - configureFieldInAllImplementations("descriptor", { impl -> impl.allFields.any { it.name == "symbol" } }) { + configureFieldInAllImplementations( + "descriptor", + { impl -> impl.allFields.any { it.name == "symbol" } && impl.element != IrTree.errorDeclaration } + ) { default(it, "symbol.descriptor", withGetter = true) } diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Implementation.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Implementation.kt index 244bd06f6b3..e3891e75501 100644 --- a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Implementation.kt +++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Implementation.kt @@ -17,6 +17,7 @@ class Implementation(element: Element, name: String?) : AbstractImplementation Unit)? = null + var bindOwnedSymbol = true override var doPrint = true init { diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/ImplementationPrinter.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/ImplementationPrinter.kt index ba5721e0e41..485aca0e999 100644 --- a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/ImplementationPrinter.kt +++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/ImplementationPrinter.kt @@ -5,13 +5,13 @@ package org.jetbrains.kotlin.ir.generator.print -import com.intellij.psi.util.PsiExpressionTrimRenderer.render import org.jetbrains.kotlin.generators.tree.* import org.jetbrains.kotlin.generators.tree.printer.printBlock import org.jetbrains.kotlin.ir.generator.IrTree -import org.jetbrains.kotlin.ir.generator.IrTree.parent import org.jetbrains.kotlin.ir.generator.irImplementationDetailType -import org.jetbrains.kotlin.ir.generator.model.* +import org.jetbrains.kotlin.ir.generator.model.Element +import org.jetbrains.kotlin.ir.generator.model.Field +import org.jetbrains.kotlin.ir.generator.model.Implementation import org.jetbrains.kotlin.utils.SmartPrinter internal class ImplementationPrinter(printer: SmartPrinter) : AbstractImplementationPrinter(printer) { @@ -34,7 +34,7 @@ internal class ImplementationPrinter(printer: SmartPrinter) : AbstractImplementa if ( implementation.element.traverseParentsUntil { it == IrTree.symbolOwner } && - !implementation.element.let { it == IrTree.propertyWithLateBinding || it == IrTree.functionWithLateBinding } + implementation.bindOwnedSymbol ) { val symbolField = implementation["symbol"] if (symbolField != null) {