diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt index e41b23dbac0..3c23dd3dfdb 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt @@ -38,7 +38,6 @@ import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.expressions.IrConst import org.jetbrains.kotlin.ir.expressions.IrExpression -import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.classOrNull @@ -257,7 +256,7 @@ class ClassCodegen private constructor( name = Name.special("") returnType = context.irBuiltIns.unitType }.apply { - body = IrBlockBodyImpl(startOffset, endOffset) + body = context.irFactory.createBlockBody(startOffset, endOffset) } // Should be initialized first in case some inline function call in `` also uses assertions. (classInitializer.body as IrBlockBody).statements.add(0, init) diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt index 57fdcb02f17..6699dda1953 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt @@ -310,7 +310,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext) targetCall.putTypeArgument(typeParameterIndex, reference.getTypeArgument(typeParameterIndex)) } - val proxyFunBody = IrBlockBodyImpl(startOffset, endOffset).also { proxyFun.body = it } + val proxyFunBody = context.irFactory.createBlockBody(startOffset, endOffset).also { proxyFun.body = it } when { targetFun.returnType.isUnit() -> { proxyFunBody.statements.add(targetCall) diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt index 6075b03c876..0cd47a90df1 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt @@ -106,7 +106,7 @@ private class JvmOverloadsAnnotationLowering(val context: JvmBackendContext) : C } wrapperIrFunction.body = if (target is IrConstructor) { - IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf(call)) + context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf(call)) } else { IrExpressionBodyImpl( UNDEFINED_OFFSET, UNDEFINED_OFFSET, call diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt index c66ae4e4546..11592298a84 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrFieldAccessExpression -import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl import org.jetbrains.kotlin.ir.expressions.impl.IrGetFieldImpl import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.classifierOrNull @@ -174,7 +173,7 @@ class JvmPropertiesLowering(private val backendContext: JvmBackendContext) : IrE // generate two properties like that; should this be the getter's return type instead? isStatic = true, returnType = backendContext.irBuiltIns.unitType, visibility = declaration.visibility ).apply { - body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) + body = backendContext.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) annotations = declaration.annotations } diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/StaticInitializersLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/StaticInitializersLowering.kt index 2b4a663326c..69cbd4dcc4f 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/StaticInitializersLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/StaticInitializersLowering.kt @@ -11,12 +11,8 @@ import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin import org.jetbrains.kotlin.backend.jvm.ir.constantValue import org.jetbrains.kotlin.ir.builders.declarations.addFunction -import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer -import org.jetbrains.kotlin.ir.declarations.IrClass -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrField +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrSetField -import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl import org.jetbrains.kotlin.ir.util.patchDeclarationParents import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities import org.jetbrains.kotlin.name.Name @@ -48,7 +44,8 @@ class StaticInitializersLowering(override val context: JvmBackendContext) : Init returnType = context.irBuiltIns.unitType visibility = JavaDescriptorVisibilities.PACKAGE_VISIBILITY }.apply { - body = IrBlockBodyImpl(irClass.startOffset, irClass.endOffset, staticInitializerStatements).patchDeclarationParents(this) + body = context.irFactory.createBlockBody(irClass.startOffset, irClass.endOffset, staticInitializerStatements) + .patchDeclarationParents(this) } } } diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeAliasAnnotationMethodsLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeAliasAnnotationMethodsLowering.kt index eb99368acb8..ded9402e18c 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeAliasAnnotationMethodsLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeAliasAnnotationMethodsLowering.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.builders.declarations.addFunction import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrTypeAlias -import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.name.Name @@ -48,7 +47,7 @@ class TypeAliasAnnotationMethodsLowering(val context: CommonBackendContext) : modality = Modality.OPEN origin = JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS }.apply { - body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) + body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) annotations += alias.annotations } } diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt index ac649017b18..7016e45484c 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt @@ -110,7 +110,7 @@ internal fun IrField.createGetField(receiver: IrValueParameter? = null): IrGetFi } internal fun List.wrapWithBlockBody(): IrBlockBody { - return IrBlockBodyImpl(SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, this) + return IrFactoryImpl.createBlockBody(SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, this) } internal fun IrFunctionAccessExpression.shallowCopy(copyTypeArguments: Boolean = true): IrFunctionAccessExpression { 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 4300d4d857d..b48ea2cf1bf 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 @@ -16,15 +16,25 @@ package org.jetbrains.kotlin.ir.expressions.impl +import org.jetbrains.kotlin.ir.IrImplementationDetail 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.IDEAPlatforms +import org.jetbrains.kotlin.utils.IDEAPluginsCompatibilityAPI -class IrBlockBodyImpl( +class IrBlockBodyImpl @IrImplementationDetail constructor( override val startOffset: Int, override val endOffset: Int ) : IrBlockBody() { + + @IrImplementationDetail + @IDEAPluginsCompatibilityAPI( + IDEAPlatforms._233, + message = "Use IrFactory instead of creating IR nodes directly", + plugins = "compose-ide-plugin", + ) constructor(startOffset: Int, endOffset: Int, statements: List) : this(startOffset, endOffset) { this.statements.addAll(statements) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/ComposeLikeGenerationExtension.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/ComposeLikeGenerationExtension.kt index bd1e5c926e9..c9d329e4bc3 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/ComposeLikeGenerationExtension.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/ComposeLikeGenerationExtension.kt @@ -193,7 +193,7 @@ class ComposeLikeDefaultArgumentRewriter( } } - declaration.body = IrBlockBodyImpl( + declaration.body = context.irFactory.createBlockBody( body.startOffset, body.endOffset, listOf( diff --git a/core/util.runtime/src/org/jetbrains/kotlin/utils/IDEAPluginsCompatibilityAPI.kt b/core/util.runtime/src/org/jetbrains/kotlin/utils/IDEAPluginsCompatibilityAPI.kt index 6da28c1e074..7b6838c9ae6 100644 --- a/core/util.runtime/src/org/jetbrains/kotlin/utils/IDEAPluginsCompatibilityAPI.kt +++ b/core/util.runtime/src/org/jetbrains/kotlin/utils/IDEAPluginsCompatibilityAPI.kt @@ -21,7 +21,8 @@ enum class IDEAPlatforms { _213, _221, _222, - _223 + _223, + _233, } /** diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt index 9d03ea4b9ec..91ea5bc4101 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt @@ -125,7 +125,7 @@ internal class InitializersLowering(val context: CommonBackendContext) : ClassLo createDispatchReceiverParameter() - body = IrBlockBodyImpl(startOffset, endOffset, allInitializers) + body = context.irFactory.createBlockBody(startOffset, endOffset, allInitializers) } for (initializer in allInitializers) { diff --git a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/native/NativeAtomicfuIrBuilder.kt b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/native/NativeAtomicfuIrBuilder.kt index 695cb12ff7f..416d8c739e9 100644 --- a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/native/NativeAtomicfuIrBuilder.kt +++ b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/native/NativeAtomicfuIrBuilder.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.ir.builders.declarations.addValueParameter import org.jetbrains.kotlin.ir.builders.declarations.buildFun import org.jetbrains.kotlin.ir.declarations.IrProperty import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.ir.declarations.createBlockBody import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.symbols.IrClassSymbol @@ -373,7 +374,7 @@ class NativeAtomicfuIrBuilder( }.apply { val lambda = this addValueParameter("it", atomicSymbols.irBuiltIns.intType) - body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf( + body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf( IrReturnImpl( UNDEFINED_OFFSET, UNDEFINED_OFFSET, type = atomicSymbols.irBuiltIns.nothingType,