[IR] Autogenerate IrErrorDeclarationImpl

This commit is contained in:
Wojciech Litewka
2024-03-01 14:24:18 +01:00
committed by Space Team
parent 2b26163030
commit f92670024e
5 changed files with 32 additions and 20 deletions
@@ -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<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI
override lateinit var descriptor: DeclarationDescriptor
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
override val symbol: IrSymbol
get() = error("Should never be called")
}
@@ -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,
@@ -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)
}
@@ -17,6 +17,7 @@ class Implementation(element: Element, name: String?) : AbstractImplementation<I
var generationCallback: (context(ImportCollector) SmartPrinter.() -> Unit)? = null
var bindOwnedSymbol = true
override var doPrint = true
init {
@@ -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<Implementation, Element, Field>(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) {