From 6281faa063879641a899d6f4fad171fbf54a1044 Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Wed, 14 Jun 2023 14:58:31 +0200 Subject: [PATCH] [IR] Move IrFactory#createBlockBody overloads to extension methods This is to prepare for IrFactory auto-generation (KT-59308). --- .../common/lower/ExpressionBodyTransformer.kt | 1 + .../js/lower/AnnotationConstructorLowering.kt | 1 + .../js/lower/CopyAccessorBodyLowerings.kt | 1 + .../js/lower/JsErrorExpressionLowering.kt | 1 + .../kotlin/ir/declarations/IrFactory.kt | 12 ------------ .../kotlin/ir/declarations/IrFactoryHelpers.kt | 16 +++++++++++++++- .../kotlin/ir/declarations/impl/IrFactoryImpl.kt | 14 -------------- .../ir/expressions/impl/IrBlockBodyImpl.kt | 5 ----- .../plugin/TransformerForCompanionGenerator.kt | 1 + ...ransformerForTopLevelDeclarationsGenerator.kt | 1 + .../compiler/backend/ir/IrGeneratorUtils.kt | 1 + .../kotlin/noarg/NoArgIrGenerationExtension.kt | 1 + 12 files changed, 23 insertions(+), 32 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ExpressionBodyTransformer.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ExpressionBodyTransformer.kt index efc132afa47..6739c67446b 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ExpressionBodyTransformer.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ExpressionBodyTransformer.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.builders.irReturn import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrFunction +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AnnotationConstructorLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AnnotationConstructorLowering.kt index ba39f28416c..5efe3bb37dc 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AnnotationConstructorLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AnnotationConstructorLowering.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.ir.backend.js.JsCommonBackendContext import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrDeclaration +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl import org.jetbrains.kotlin.ir.util.constructors diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CopyAccessorBodyLowerings.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CopyAccessorBodyLowerings.kt index 4dc27dad669..474397492fd 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CopyAccessorBodyLowerings.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CopyAccessorBodyLowerings.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.backend.common.DeclarationTransformer import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrField import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsErrorExpressionLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsErrorExpressionLowering.kt index c2e2a8ae4db..62507f99b3b 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsErrorExpressionLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsErrorExpressionLowering.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.builders.declarations.buildFun import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.IrErrorExpression import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt index a9b6f631dbc..84fd72ddf27 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt @@ -217,16 +217,4 @@ interface IrFactory { startOffset: Int, endOffset: Int, ): IrBlockBody - - fun createBlockBody( - startOffset: Int, - endOffset: Int, - statements: List, - ): IrBlockBody - - fun createBlockBody( - startOffset: Int, - endOffset: Int, - initializer: IrBlockBody.() -> Unit, - ): IrBlockBody } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactoryHelpers.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactoryHelpers.kt index b1be45c978e..b492b5f871b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactoryHelpers.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactoryHelpers.kt @@ -5,8 +5,22 @@ package org.jetbrains.kotlin.ir.declarations +import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrExpressionBody fun IrFactory.createExpressionBody(expression: IrExpression): IrExpressionBody = - createExpressionBody(expression.startOffset, expression.endOffset, expression) \ No newline at end of file + createExpressionBody(expression.startOffset, expression.endOffset, expression) + +fun IrFactory.createBlockBody( + startOffset: Int, + endOffset: Int, + initializer: IrBlockBody.() -> Unit, +): IrBlockBody = createBlockBody(startOffset, endOffset).apply(initializer) + +fun IrFactory.createBlockBody( + startOffset: Int, + endOffset: Int, + statements: List, +): IrBlockBody = createBlockBody(startOffset, endOffset) { this.statements.addAll(statements) } \ No newline at end of file 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 e364f78e309..fba3bf96b7c 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 @@ -263,18 +263,4 @@ abstract class AbstractIrFactoryImpl : IrFactory { endOffset: Int, ): IrBlockBody = IrBlockBodyImpl(startOffset, endOffset) - - override fun createBlockBody( - startOffset: Int, - endOffset: Int, - statements: List, - ): IrBlockBody = - IrBlockBodyImpl(startOffset, endOffset, statements) - - override fun createBlockBody( - startOffset: Int, - endOffset: Int, - initializer: IrBlockBody.() -> Unit, - ): IrBlockBody = - IrBlockBodyImpl(startOffset, endOffset, initializer) } \ No newline at end of file diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBlockBodyImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBlockBodyImpl.kt index 28447261756..4300d4d857d 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBlockBodyImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBlockBodyImpl.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.expressions.IrBlockBody -import org.jetbrains.kotlin.utils.SmartList class IrBlockBodyImpl( override val startOffset: Int, @@ -30,10 +29,6 @@ class IrBlockBodyImpl( this.statements.addAll(statements) } - constructor(startOffset: Int, endOffset: Int, initializer: IrBlockBody.() -> Unit) : this(startOffset, endOffset) { - this.initializer() - } - override val statements: MutableList = ArrayList(2) override val factory: IrFactory diff --git a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForCompanionGenerator.kt b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForCompanionGenerator.kt index 002713b8c51..2163f28e649 100644 --- a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForCompanionGenerator.kt +++ b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForCompanionGenerator.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.GeneratedDeclarationKey import org.jetbrains.kotlin.fir.plugin.generators.CompanionGenerator import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl diff --git a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForTopLevelDeclarationsGenerator.kt b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForTopLevelDeclarationsGenerator.kt index 1fc0c8a1276..dffa9a89207 100644 --- a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForTopLevelDeclarationsGenerator.kt +++ b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/ir/plugin/TransformerForTopLevelDeclarationsGenerator.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.GeneratedDeclarationKey import org.jetbrains.kotlin.fir.plugin.generators.TopLevelDeclarationsGenerator import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/IrGeneratorUtils.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/IrGeneratorUtils.kt index fea48c6ddb5..221ea6eae16 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/IrGeneratorUtils.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/IrGeneratorUtils.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlinx.serialization.compiler.backend.ir import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrConstructor +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl diff --git a/plugins/noarg/noarg.backend/src/org/jetbrains/kotlin/noarg/NoArgIrGenerationExtension.kt b/plugins/noarg/noarg.backend/src/org/jetbrains/kotlin/noarg/NoArgIrGenerationExtension.kt index 000927acb71..5e5ae8d28ac 100644 --- a/plugins/noarg/noarg.backend/src/org/jetbrains/kotlin/noarg/NoArgIrGenerationExtension.kt +++ b/plugins/noarg/noarg.backend/src/org/jetbrains/kotlin/noarg/NoArgIrGenerationExtension.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl