[IR] Mark IrBlockBodyImpl with an opt-in annotation

KT-59318
This commit is contained in:
Sergej Jaskiewicz
2023-12-07 19:23:45 +01:00
committed by Space Team
parent f482b6a458
commit 2096d22e18
12 changed files with 26 additions and 20 deletions
@@ -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("<clinit>")
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 `<clinit>` also uses assertions.
(classInitializer.body as IrBlockBody).statements.add(0, init)
@@ -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)
@@ -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
@@ -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
}
@@ -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)
}
}
}
@@ -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
}
}
@@ -110,7 +110,7 @@ internal fun IrField.createGetField(receiver: IrValueParameter? = null): IrGetFi
}
internal fun List<IrStatement>.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 {
@@ -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<IrStatement>) : this(startOffset, endOffset) {
this.statements.addAll(statements)
}
@@ -193,7 +193,7 @@ class ComposeLikeDefaultArgumentRewriter(
}
}
declaration.body = IrBlockBodyImpl(
declaration.body = context.irFactory.createBlockBody(
body.startOffset,
body.endOffset,
listOf(
@@ -21,7 +21,8 @@ enum class IDEAPlatforms {
_213,
_221,
_222,
_223
_223,
_233,
}
/**
@@ -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) {
@@ -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,