IR: create IrBlockBody via IrFactory
This commit is contained in:
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.ir.*
|
||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrDeclarationBuilder
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.JsInnerClassesSupport
|
||||
import org.jetbrains.kotlin.ir.backend.js.utils.OperatorNames
|
||||
@@ -129,7 +128,7 @@ class JsIrBackendContext(
|
||||
return testContainerFuns.getOrPut(module) {
|
||||
val file = syntheticFile("tests", module)
|
||||
jsIrDeclarationBuilder.buildFunction("test fun", irBuiltIns.unitType, file).apply {
|
||||
body = JsIrBuilder.buildBlockBody(emptyList())
|
||||
body = irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET, emptyList())
|
||||
file.declarations += this
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,8 +75,6 @@ object JsIrBuilder {
|
||||
) =
|
||||
IrSetFieldImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, symbol, receiver, value, type, SYNTHESIZED_STATEMENT, superQualifierSymbol)
|
||||
|
||||
fun buildBlockBody(statements: List<IrStatement>) = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, statements)
|
||||
|
||||
fun buildBlock(type: IrType) = IrBlockImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, type, SYNTHESIZED_STATEMENT)
|
||||
fun buildBlock(type: IrType, statements: List<IrStatement>) =
|
||||
IrBlockImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, type, SYNTHESIZED_STATEMENT, statements)
|
||||
|
||||
+2
-3
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.backend.common.DeclarationTransformer
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
|
||||
@@ -27,10 +26,10 @@ class AnnotationConstructorLowering(context: CommonBackendContext) : Declaration
|
||||
|
||||
// put empty body to make sure proper initializer is generated
|
||||
// TODO what about its previous body?
|
||||
declaration.body = IrBlockBodyImpl(declaration.startOffset, declaration.endOffset) {
|
||||
declaration.body = declaration.factory.createBlockBody(declaration.startOffset, declaration.endOffset) {
|
||||
statements += IrInstanceInitializerCallImpl(startOffset, endOffset, irClass.symbol, unitType)
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@ abstract class AbstractBlockDecomposerLowering(
|
||||
}
|
||||
|
||||
private fun IrExpressionBody.toBlockBody(containingFunction: IrFunction): IrBlockBody {
|
||||
return IrBlockBodyImpl(startOffset, endOffset) {
|
||||
return context.irFactory.createBlockBody(startOffset, endOffset) {
|
||||
expression.patchDeclarationParents(containingFunction)
|
||||
val returnStatement = JsIrBuilder.buildReturn(containingFunction.symbol, expression, nothingType)
|
||||
statements += returnStatement
|
||||
|
||||
+1
-2
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.ir.backend.js.utils.getJsName
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.classifierOrNull
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
@@ -140,7 +139,7 @@ class BridgesConstruction(val context: JsCommonBackendContext) : DeclarationTran
|
||||
overriddenSymbols += bridge.symbol
|
||||
}
|
||||
|
||||
irFunction.body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
irFunction.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
statements += context.createIrBuilder(irFunction.symbol).irBlockBody(irFunction) {
|
||||
if (specialMethodInfo != null) {
|
||||
irFunction.valueParameters.take(specialMethodInfo.argumentsToCheck).forEach {
|
||||
|
||||
+2
-2
@@ -293,7 +293,7 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod
|
||||
}
|
||||
}
|
||||
|
||||
body = IrBlockBodyImpl(reference.startOffset, reference.endOffset, listOf(reference.run {
|
||||
body = factory.createBlockBody(reference.startOffset, reference.endOffset, listOf(reference.run {
|
||||
IrReturnImpl(
|
||||
startOffset,
|
||||
endOffset, nothingType,
|
||||
@@ -324,7 +324,7 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod
|
||||
type = clazz.defaultType
|
||||
}
|
||||
|
||||
getter.body = IrBlockBodyImpl(
|
||||
getter.body = context.irFactory.createBlockBody(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf(
|
||||
IrReturnImpl(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, nothingType, getter.symbol, IrConstImpl.string(
|
||||
|
||||
+2
-3
@@ -15,7 +15,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.IrSetField
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrReturnImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl
|
||||
@@ -45,7 +44,7 @@ class CreateScriptFunctionsPhase(val context: CommonBackendContext) : FileLoweri
|
||||
initializeStatements.forEach { it.first.initializer = null }
|
||||
|
||||
val initializeScriptFunction = createFunction(irScript, "\$initializeScript\$", context.irBuiltIns.unitType).also {
|
||||
it.body = IrBlockBodyImpl(
|
||||
it.body = it.factory.createBlockBody(
|
||||
startOffset,
|
||||
endOffset,
|
||||
initializeStatements.map { (field, expression) -> createIrSetField(field, expression) }
|
||||
@@ -53,7 +52,7 @@ class CreateScriptFunctionsPhase(val context: CommonBackendContext) : FileLoweri
|
||||
}
|
||||
|
||||
val evaluateScriptFunction = createFunction(irScript, "\$evaluateScript\$", getReturnType(irScript)).also {
|
||||
it.body = IrBlockBodyImpl(
|
||||
it.body = it.factory.createBlockBody(
|
||||
startOffset,
|
||||
endOffset,
|
||||
irScript.statements.prepareForEvaluateScriptFunction(it)
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.BodyLoweringPass
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.PrimaryConstructorLowering.SYNTHETIC_PRIMARY_CONSTRUCTOR
|
||||
@@ -115,7 +116,7 @@ class ES6AddInternalParametersToConstructorPhase(val context: JsIrBackendContext
|
||||
).apply {
|
||||
addValueParameter("\$this\$", context.dynamicType)
|
||||
|
||||
body = JsIrBuilder.buildBlockBody(constructor.body?.statements ?: emptyList())
|
||||
body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET, constructor.body?.statements.orEmpty())
|
||||
|
||||
transformChildren(object : IrElementTransformerVoid() {
|
||||
override fun visitGetValue(expression: IrGetValue): IrExpression {
|
||||
|
||||
+4
-5
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
@@ -129,7 +128,7 @@ class EnumClassConstructorLowering(val context: JsCommonBackendContext) : Declar
|
||||
enumConstructor.newConstructor = this
|
||||
|
||||
enumConstructor.body?.let { oldBody ->
|
||||
body = IrBlockBodyImpl(oldBody.startOffset, oldBody.endOffset) {
|
||||
body = context.irFactory.createBlockBody(oldBody.startOffset, oldBody.endOffset) {
|
||||
statements += (oldBody as IrBlockBody).statements
|
||||
|
||||
context.fixReferencesToConstructorParameters(enumClass, this)
|
||||
@@ -400,7 +399,7 @@ class EnumClassCreateInitializerLowering(val context: JsIrBackendContext) : Decl
|
||||
|
||||
private fun createInitEntryInstancesFun(irClass: IrClass, entryInstancesInitializedField: IrField): IrSimpleFunction =
|
||||
context.jsIrDeclarationBuilder.buildFunction(irClass, "${irClass.name.identifier}_initEntries", context.irBuiltIns.unitType).also {
|
||||
it.body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
it.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
statements += context.createIrBuilder(it.symbol).irBlockBody(it) {
|
||||
+irIfThen(irGetField(null, entryInstancesInitializedField), irReturnUnit())
|
||||
+irSetField(null, entryInstancesInitializedField, irBoolean(true))
|
||||
@@ -456,7 +455,7 @@ class EnumEntryCreateGetInstancesFunsLowering(val context: JsIrBackendContext):
|
||||
enumEntry.getType(irClass)
|
||||
)
|
||||
}.also {
|
||||
it.body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
it.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
statements += context.createIrBuilder(it.symbol).irBlockBody(it) {
|
||||
+irCall(initEntryInstancesFun)
|
||||
+irReturn(irGetField(null, enumEntry.correspondingField!!))
|
||||
@@ -475,7 +474,7 @@ class EnumSyntheticFunctionsLowering(val context: JsIrBackendContext): Declarati
|
||||
val kind = body.kind
|
||||
|
||||
declaration.parents.filterIsInstance<IrClass>().firstOrNull { it.goodEnum }?.let { irClass ->
|
||||
declaration.body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
declaration.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
statements += when (kind) {
|
||||
IrSyntheticBodyKind.ENUM_VALUES -> createEnumValuesBody(declaration, irClass)
|
||||
IrSyntheticBodyKind.ENUM_VALUEOF -> createEnumValueOfBody(declaration, irClass)
|
||||
|
||||
+2
-4
@@ -87,7 +87,7 @@ class InteropCallableReferenceLowering(val context: JsIrBackendContext) : BodyLo
|
||||
invokeExpression.putValueArgument(i, getValue(vp))
|
||||
}
|
||||
|
||||
return IrBlockBodyImpl(
|
||||
return context.irFactory.createBlockBody(
|
||||
UNDEFINED_OFFSET,
|
||||
UNDEFINED_OFFSET,
|
||||
listOf(
|
||||
@@ -188,9 +188,7 @@ class InteropCallableReferenceLowering(val context: JsIrBackendContext) : BodyLo
|
||||
statements.add(JsIrBuilder.buildReturn(factoryFunction.symbol, functionExpression, context.irBuiltIns.nothingType))
|
||||
}
|
||||
|
||||
return expression.run {
|
||||
IrBlockBodyImpl(startOffset, endOffset, statements)
|
||||
}
|
||||
return context.irFactory.createBlockBody(expression.startOffset, expression.endOffset, statements)
|
||||
}
|
||||
|
||||
private fun buildFactoryFunction(expression: IrConstructorCall): IrSimpleFunction {
|
||||
|
||||
+1
-2
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||
import org.jetbrains.kotlin.ir.types.makeNullable
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
@@ -56,7 +55,7 @@ class ObjectDeclarationLowering(
|
||||
|
||||
val primaryConstructor = declaration.primaryConstructor ?: declaration.syntheticPrimaryConstructor!!
|
||||
|
||||
getInstanceFun.body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
getInstanceFun.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
statements += context.createIrBuilder(getInstanceFun.symbol).irBlockBody(getInstanceFun) {
|
||||
+irIfThen(
|
||||
irEqualsNull(irGetField(null, instanceField)),
|
||||
|
||||
+1
-2
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
||||
import org.jetbrains.kotlin.ir.util.constructors
|
||||
@@ -53,7 +52,7 @@ class PrimaryConstructorLowering(context: JsCommonBackendContext) : DeclarationT
|
||||
}
|
||||
|
||||
declaration.body = irClass.run {
|
||||
IrBlockBodyImpl(startOffset, endOffset, listOf(IrInstanceInitializerCallImpl(startOffset, endOffset, symbol, unitType)))
|
||||
factory.createBlockBody(startOffset, endOffset, listOf(IrInstanceInitializerCallImpl(startOffset, endOffset, symbol, unitType)))
|
||||
}
|
||||
|
||||
return declaration
|
||||
|
||||
+5
-2
@@ -14,7 +14,10 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrPropertyReferenceImpl
|
||||
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -105,7 +108,7 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : DeclarationTrans
|
||||
|
||||
function.body?.let {
|
||||
staticFunction.body = when (it) {
|
||||
is IrBlockBody -> IrBlockBodyImpl(it.startOffset, it.endOffset) {
|
||||
is IrBlockBody -> context.irFactory.createBlockBody(it.startOffset, it.endOffset) {
|
||||
statements += (it.copyWithParameters() as IrBlockBody).statements
|
||||
}
|
||||
is IrExpressionBody -> context.irFactory.createExpressionBody(it.startOffset, it.endOffset) {
|
||||
|
||||
+6
-3
@@ -19,7 +19,10 @@ import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrRawFunctionReferenceImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrReturnImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
||||
@@ -81,7 +84,7 @@ class SecondaryConstructorLowering(val context: JsIrBackendContext) : Declaratio
|
||||
}
|
||||
|
||||
private fun generateFactoryBody(constructor: IrConstructor, irClass: IrClass, stub: IrSimpleFunction, delegate: IrSimpleFunction) {
|
||||
stub.body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
stub.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
val type = irClass.defaultType
|
||||
val createFunctionIntrinsic = context.intrinsics.jsObjectCreate
|
||||
val irCreateCall = JsIrBuilder.buildCall(createFunctionIntrinsic.symbol, type, listOf(type))
|
||||
@@ -128,7 +131,7 @@ class SecondaryConstructorLowering(val context: JsIrBackendContext) : Declaratio
|
||||
val oldValueParameters = constructor.valueParameters + oldThisReceiver
|
||||
|
||||
// TODO: replace parameters as well
|
||||
delegate.body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
delegate.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||
statements += (constructorBody.deepCopyWithSymbols(delegate) as IrStatementContainer).statements
|
||||
statements += JsIrBuilder.buildReturn(delegate.symbol, JsIrBuilder.buildGetValue(thisParam.symbol), context.irBuiltIns.nothingType)
|
||||
transformChildrenVoid(ThisUsageReplaceTransformer(delegate.symbol, oldValueParameters.zip(delegate.valueParameters).toMap()))
|
||||
|
||||
+2
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.backend.js.lower
|
||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
@@ -54,7 +55,7 @@ class TestGenerator(val context: JsIrBackendContext, val testContainerFactory: (
|
||||
parentFunction: IrSimpleFunction,
|
||||
ignored: Boolean = false
|
||||
): FunctionWithBody {
|
||||
val body = JsIrBuilder.buildBlockBody(emptyList())
|
||||
val body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET, emptyList())
|
||||
|
||||
val function = context.jsIrDeclarationBuilder.buildFunction("$name test fun", context.irBuiltIns.anyNType, parentFunction)
|
||||
function.body = body
|
||||
|
||||
+7
-3
@@ -15,7 +15,10 @@ import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.explicitParameters
|
||||
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
||||
@@ -135,8 +138,9 @@ class JsSuspendFunctionsLowering(ctx: JsIrBackendContext) : AbstractSuspendFunct
|
||||
})
|
||||
}
|
||||
|
||||
val functionBody =
|
||||
IrBlockBodyImpl(stateMachineFunction.startOffset, stateMachineFunction.endOffset, listOf(suspendResult, rootLoop))
|
||||
val functionBody = context.irFactory.createBlockBody(
|
||||
stateMachineFunction.startOffset, stateMachineFunction.endOffset, listOf(suspendResult, rootLoop)
|
||||
)
|
||||
|
||||
stateMachineFunction.body = functionBody
|
||||
|
||||
|
||||
+1
-2
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
||||
|
||||
class RemoveInlineFunctionsWithReifiedTypeParametersLowering: DeclarationTransformer {
|
||||
@@ -30,7 +29,7 @@ class CopyInlineFunctionBodyLowering(val context: JsIrBackendContext) : Declarat
|
||||
override fun transformFlat(declaration: IrDeclaration): List<IrDeclaration>? {
|
||||
if (declaration is IrFunction && declaration.isInline) {
|
||||
declaration.body?.let { originalBody ->
|
||||
declaration.body = IrBlockBodyImpl(originalBody.startOffset, originalBody.endOffset) {
|
||||
declaration.body = context.irFactory.createBlockBody(originalBody.startOffset, originalBody.endOffset) {
|
||||
statements += (originalBody.deepCopyWithSymbols(declaration) as IrBlockBody).statements
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -131,7 +131,7 @@ fun breakCrossModuleFieldAccess(
|
||||
name = Name.identifier("get-$fieldName")
|
||||
returnType = type
|
||||
}
|
||||
getter.body = IrBlockBodyImpl(
|
||||
getter.body = factory.createBlockBody(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf(
|
||||
IrReturnImpl(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, type, getter.symbol,
|
||||
@@ -158,7 +158,7 @@ fun breakCrossModuleFieldAccess(
|
||||
|
||||
val param = setter.addValueParameter("value", type)
|
||||
|
||||
setter.body = IrBlockBodyImpl(
|
||||
setter.body = factory.createBlockBody(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf(
|
||||
IrSetFieldImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, symbol, type).apply {
|
||||
value = IrGetValueImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, param.symbol)
|
||||
|
||||
Reference in New Issue
Block a user