diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt index 44c64428ec5..309de8eda79 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt @@ -18,16 +18,22 @@ import org.jetbrains.kotlin.utils.Printer class IrLoweringContext(backendContext: BackendContext) : IrGeneratorContext(backendContext.irBuiltIns) -class FunctionIrBuilder(backendContext: BackendContext, functionDescriptor: FunctionDescriptor) : +class DeclarationIrBuilder(backendContext: BackendContext, + declarationDescriptor: DeclarationDescriptor, + startOffset : Int = UNDEFINED_OFFSET, + endOffset : Int = UNDEFINED_OFFSET) : IrBuilderWithScope( IrLoweringContext(backendContext), - Scope(functionDescriptor), - UNDEFINED_OFFSET, - UNDEFINED_OFFSET + Scope(declarationDescriptor), + startOffset, + endOffset ) -fun BackendContext.createFunctionIrBuilder(functionDescriptor: FunctionDescriptor) = - FunctionIrBuilder(this, functionDescriptor) +fun BackendContext.createIrBuilder(declarationDescriptor: DeclarationDescriptor, + startOffset : Int = UNDEFINED_OFFSET, + endOffset : Int = UNDEFINED_OFFSET) = + DeclarationIrBuilder(this, declarationDescriptor, startOffset, endOffset) + fun T.at(element: IrElement) = this.at(element.startOffset, element.endOffset) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CallableReferenceLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CallableReferenceLowering.kt index 2a4d7b34382..d847e633147 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CallableReferenceLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CallableReferenceLowering.kt @@ -1,7 +1,7 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.common.DeclarationContainerLoweringPass -import org.jetbrains.kotlin.backend.common.lower.createFunctionIrBuilder +import org.jetbrains.kotlin.backend.common.lower.createIrBuilder import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.descriptors.* import org.jetbrains.kotlin.backend.konan.ir.* @@ -136,7 +136,7 @@ private class CallableReferencesUnbinder(val lower: CallableReferenceLowering, // Create new function descriptor: val newDescriptor = createSimpleFunctionImplTargetDescriptor(descriptor, unboundParams) - val builder = lower.context.createFunctionIrBuilder(newDescriptor) + val builder = lower.context.createIrBuilder(newDescriptor) val blockBody = builder.irBlockBody(startOffset, endOffset) { val boundArgsGet = irCall(simpleFunctionImplBoundArgsGetter).apply { dispatchReceiver = irGet(newDescriptor.valueParameters[0]) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DefaultParameterStubGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DefaultParameterStubGenerator.kt index 79a2c36380c..0510b1d4fdd 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DefaultParameterStubGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DefaultParameterStubGenerator.kt @@ -2,7 +2,7 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.common.BodyLoweringPass import org.jetbrains.kotlin.backend.common.DeclarationContainerLoweringPass -import org.jetbrains.kotlin.backend.common.lower.createFunctionIrBuilder +import org.jetbrains.kotlin.backend.common.lower.createIrBuilder import org.jetbrains.kotlin.backend.common.lower.irBlockBody import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.KonanPlatform @@ -70,7 +70,7 @@ class DefaultParameterStubGenerator internal constructor(val context: Context): functionDescriptor.overriddenDescriptors.forEach { context.log("DEFAULT-REPLACER: $it") } if (bodies.isNotEmpty()) { val description = functionDescriptor.getOrCreateDefaultsDescription(context) - val builder = context.createFunctionIrBuilder(description.function) + val builder = context.createIrBuilder(description.function) val body = builder.irBlockBody(irFunction) { val params = mutableListOf() val variables = mutableMapOf() diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt index ee6bd0a9091..61a0721ad65 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt @@ -2,7 +2,7 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.common.FunctionLoweringPass import org.jetbrains.kotlin.backend.common.lower.at -import org.jetbrains.kotlin.backend.common.lower.createFunctionIrBuilder +import org.jetbrains.kotlin.backend.common.lower.createIrBuilder import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.ValueType import org.jetbrains.kotlin.backend.konan.isRepresentedAs @@ -38,7 +38,7 @@ internal class InteropLowering(val context: Context) : FunctionLoweringPass { private class InteropTransformer(val context: Context, val function: FunctionDescriptor) : IrElementTransformerVoid() { - val builder = context.createFunctionIrBuilder(function) + val builder = context.createIrBuilder(function) val interop = context.interopBuiltIns private fun MemberScope.getSingleContributedFunction(name: String, diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StringConcatenationLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StringConcatenationLowering.kt index 8ee8ae7545b..0bc1e31de01 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StringConcatenationLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StringConcatenationLowering.kt @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.common.FileLoweringPass +import org.jetbrains.kotlin.backend.common.lower.createIrBuilder import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.descriptors.signature2Descriptor import org.jetbrains.kotlin.backend.konan.ir.irLetSequence @@ -92,7 +93,7 @@ private class StringConcatenationTransformer(val lower: StringConcatenationLower override fun visitDeclaration(declaration: IrDeclaration): IrStatement { with(declaration) { buildersStack.add( - IrBlockBuilder(IrGeneratorContext(context.irBuiltIns), Scope(descriptor), startOffset, endOffset) + context.createIrBuilder(declaration.descriptor, startOffset, endOffset) ) transformChildrenVoid(this@StringConcatenationTransformer) buildersStack.removeAt(buildersStack.lastIndex) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt index cbf34eb8774..19faba44154 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TypeOperatorLowering.kt @@ -34,7 +34,7 @@ internal class TypeOperatorLowering(val context: Context) : FunctionLoweringPass private class TypeOperatorTransformer(val context: Context, val function: FunctionDescriptor) : IrElementTransformerVoid() { - private val builder = context.createFunctionIrBuilder(function) + private val builder = context.createIrBuilder(function) val throwClassCastException by lazy { context.builtIns.getKonanInternalFunctions("ThrowClassCastException").single()