[IR] Mark IrExpressionBodyImpl with an opt-in annotation

KT-59318
This commit is contained in:
Sergej Jaskiewicz
2023-12-07 19:40:15 +01:00
committed by Space Team
parent 2096d22e18
commit 1b557c1657
15 changed files with 48 additions and 42 deletions
@@ -129,15 +129,17 @@ internal class CEnumClassGenerator(
)
val constructorSymbol = symbolTable.descriptorExtension.referenceConstructor(enumDescriptor.unsubstitutedPrimaryConstructor!!)
postLinkageSteps.add {
enumEntry.initializerExpression = IrExpressionBodyImpl(IrEnumConstructorCallImpl(
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
type = irBuiltIns.unitType,
symbol = constructorSymbol,
typeArgumentsCount = 0,
valueArgumentsCount = constructorSymbol.owner.valueParameters.size
).also {
it.putValueArgument(0, extractEnumEntryValue(entryDescriptor))
})
enumEntry.initializerExpression = context.irFactory.createExpressionBody(
IrEnumConstructorCallImpl(
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
type = irBuiltIns.unitType,
symbol = constructorSymbol,
typeArgumentsCount = 0,
valueArgumentsCount = constructorSymbol.owner.valueParameters.size,
).also {
it.putValueArgument(0, extractEnumEntryValue(entryDescriptor))
},
)
}
return enumEntry
}
@@ -14,8 +14,8 @@ import org.jetbrains.kotlin.descriptors.MemberDescriptor
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl
import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
@@ -83,7 +83,7 @@ internal class ExpectToActualDefaultValueCopier(private val irModule: IrModuleFr
val actualForExpected = function.findActualForExpected()
actualForExpected.valueParameters[index].defaultValue =
IrExpressionBodyImpl(
irModule.irBuiltins.irFactory.createExpressionBody(
defaultValue.startOffset, defaultValue.endOffset,
defaultValue.expression.remapExpectValueSymbols().patchDeclarationParents(actualForExpected)
)
@@ -81,7 +81,7 @@ internal class InitializersLowering(val context: CommonBackendContext) : ClassLo
// We shall keep initializer for constants for compile-time instantiation.
// We suppose that if the property is const, then its initializer is IrConst.
// If this requirement isn't satisfied, then PropertyAccessorInlineLowering can fail.
declaration.initializer = if (isConst) IrExpressionBodyImpl(initExpression.shallowCopy()) else null
declaration.initializer = if (isConst) context.irFactory.createExpressionBody(initExpression.shallowCopy()) else null
return declaration
}
@@ -186,7 +186,7 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
if (eager)
annotations += buildSimpleAnnotation(context.irBuiltIns, startOffset, endOffset, context.ir.symbols.eagerInitialization.owner)
initializer = IrExpressionBodyImpl(startOffset, endOffset, expression)
initializer = context.irFactory.createExpressionBody(startOffset, endOffset, expression)
}
addChild(irField)
}
@@ -617,7 +617,7 @@ internal class TestProcessor (val context: Context) {
annotations += buildSimpleAnnotation(context.irBuiltIns, startOffset, endOffset, context.ir.symbols.eagerInitialization.owner)
annotations += buildSimpleAnnotation(context.irBuiltIns, startOffset, endOffset, context.ir.symbols.threadLocal.owner)
statements.forEach { it.accept(SetDeclarationsParentVisitor, this) }
initializer = IrExpressionBodyImpl(SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
initializer = context.irFactory.createExpressionBody(SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
IrCompositeImpl(SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, context.irBuiltIns.unitType, null, statements)
)
}