From d5b78c0cdc9fb478bff7c4660567601c2aaefe6b Mon Sep 17 00:00:00 2001 From: Wojciech Litewka Date: Fri, 16 Feb 2024 12:41:37 +0100 Subject: [PATCH] [IR] Autogenerate IrFunctionImpl ^KT-65773 In Progress --- .../ir/declarations/IrSimpleFunction.kt | 2 + .../ir/declarations/impl/IrFunctionImpl.kt | 57 ++++++++++--------- .../generator/ImplementationConfigurator.kt | 7 ++- .../jetbrains/kotlin/ir/generator/IrTree.kt | 3 + 4 files changed, 41 insertions(+), 28 deletions(-) diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt index b6c147ce180..7d8cae78373 100644 --- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt +++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt @@ -18,6 +18,8 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor abstract class IrSimpleFunction : IrFunction(), IrOverridableDeclaration, IrAttributeContainer { abstract override val symbol: IrSimpleFunctionSymbol + abstract override var overriddenSymbols: List + abstract var isTailrec: Boolean abstract var isSuspend: Boolean diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt index 3fb3eb8ebb7..c1e1ed132b3 100644 --- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt +++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.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", "unused") + package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.DescriptorVisibility @@ -19,58 +24,58 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource -// IMPORTANT: This class is used in the Compose IDE plugin (platform 233). -// Don't rename it or change its constructor's signature so as not to break binary compatibility when an older version of -// the Compose IDE plugin is used with a newer version of the Kotlin IDE plugin that vendors the updated compiler version. class IrFunctionImpl @IrImplementationDetail constructor( override val startOffset: Int, override val endOffset: Int, override var origin: IrDeclarationOrigin, - override val symbol: IrSimpleFunctionSymbol, + override val factory: IrFactory, override var name: Name, - override var visibility: DescriptorVisibility, - override var modality: Modality, - override var isInline: Boolean, override var isExternal: Boolean, + override var visibility: DescriptorVisibility, + override val containerSource: DeserializedContainerSource?, + override var isInline: Boolean, + override var isExpect: Boolean, + override var modality: Modality, + override val symbol: IrSimpleFunctionSymbol, override var isTailrec: Boolean, override var isSuspend: Boolean, + override var isFakeOverride: Boolean, override var isOperator: Boolean, override var isInfix: Boolean, - override var isExpect: Boolean, - override var isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE, - override var containerSource: DeserializedContainerSource? = null, - override val factory: IrFactory = IrFactoryImpl, ) : IrSimpleFunction() { + override var annotations: List = emptyList() + + override lateinit var parent: IrDeclarationParent + + override var typeParameters: List = emptyList() + + override var metadata: MetadataSource? = null + @ObsoleteDescriptorBasedAPI override val descriptor: FunctionDescriptor get() = symbol.descriptor - init { - symbol.bind(this) - } - - override lateinit var parent: IrDeclarationParent - override var annotations: List = emptyList() - - override var typeParameters: List = emptyList() + override lateinit var returnType: IrType override var dispatchReceiverParameter: IrValueParameter? = null + override var extensionReceiverParameter: IrValueParameter? = null + override var valueParameters: List = emptyList() override var contextReceiverParametersCount: Int = 0 - override lateinit var returnType: IrType - override var body: IrBody? = null - override var metadata: MetadataSource? = null + override var attributeOwnerId: IrAttributeContainer = this + + override var originalBeforeInline: IrAttributeContainer? = null override var overriddenSymbols: List = emptyList() - override var attributeOwnerId: IrAttributeContainer = this - override var originalBeforeInline: IrAttributeContainer? = null - override var correspondingPropertySymbol: IrPropertySymbol? = null -} + init { + symbol.bind(this) + } +} 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 23acf0dd487..f6f6627d407 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 @@ -16,8 +16,11 @@ object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() { isLateinit("body") } - impl(simpleFunction) { - implementation.doPrint = false + impl(simpleFunction, "IrFunctionImpl") { + defaultEmptyList("valueParameters") + defaultNull("dispatchReceiverParameter", "extensionReceiverParameter", "body", "correspondingPropertySymbol") + default("contextReceiverParametersCount", "0") + isLateinit("returnType") } impl(functionWithLateBinding) { implementation.doPrint = false diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/IrTree.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/IrTree.kt index 92aaaf283b2..395f942e7fa 100644 --- a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/IrTree.kt +++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/IrTree.kt @@ -555,6 +555,9 @@ object IrTree : AbstractTreeBuilder() { parent(attributeContainer) +symbol(simpleFunctionSymbolType) + +listField("overriddenSymbols", simpleFunctionSymbolType, mutability = Var) { + skipInIrFactory() + } +field("isTailrec", boolean) +field("isSuspend", boolean) +isFakeOverrideField()