[Native] Drop irBuilder from IrUtils2
We can reuse `createIrBuilder` function
This commit is contained in:
+3
-2
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.cgen
|
package org.jetbrains.kotlin.backend.konan.cgen
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.lower.at
|
import org.jetbrains.kotlin.backend.common.lower.at
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.common.lower.irNot
|
import org.jetbrains.kotlin.backend.common.lower.irNot
|
||||||
import org.jetbrains.kotlin.backend.konan.*
|
import org.jetbrains.kotlin.backend.konan.*
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||||
@@ -1162,7 +1163,7 @@ private class ObjCBlockPointerValuePassing(
|
|||||||
constructor.valueParameters += constructorParameter
|
constructor.valueParameters += constructorParameter
|
||||||
constructorParameter.parent = constructor
|
constructorParameter.parent = constructor
|
||||||
|
|
||||||
constructor.body = irBuilder(stubs.irBuiltIns, constructor.symbol).irBlockBody(startOffset, endOffset) {
|
constructor.body = stubs.irBuiltIns.createIrBuilder(constructor.symbol).irBlockBody(startOffset, endOffset) {
|
||||||
+irDelegatingConstructorCall(symbols.any.owner.constructors.single())
|
+irDelegatingConstructorCall(symbols.any.owner.constructors.single())
|
||||||
+irSetField(irGet(irClass.thisReceiver!!), blockHolderField,
|
+irSetField(irGet(irClass.thisReceiver!!), blockHolderField,
|
||||||
irCall(symbols.interopCreateObjCObjectHolder.owner).apply {
|
irCall(symbols.interopCreateObjCObjectHolder.owner).apply {
|
||||||
@@ -1208,7 +1209,7 @@ private class ObjCBlockPointerValuePassing(
|
|||||||
parameter
|
parameter
|
||||||
}
|
}
|
||||||
|
|
||||||
invokeMethod.body = irBuilder(stubs.irBuiltIns, invokeMethod.symbol).irBlockBody(startOffset, endOffset) {
|
invokeMethod.body = stubs.irBuiltIns.createIrBuilder(invokeMethod.symbol).irBlockBody(startOffset, endOffset) {
|
||||||
val blockPointer = irCall(symbols.interopObjCObjectRawValueGetter.owner).apply {
|
val blockPointer = irCall(symbols.interopObjCObjectRawValueGetter.owner).apply {
|
||||||
extensionReceiver = irGetField(irGet(invokeMethod.dispatchReceiverParameter!!), blockHolderField)
|
extensionReceiver = irGetField(irGet(invokeMethod.dispatchReceiverParameter!!), blockHolderField)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.cgen
|
package org.jetbrains.kotlin.backend.konan.cgen
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.common.lower.irBlock
|
import org.jetbrains.kotlin.backend.common.lower.irBlock
|
||||||
import org.jetbrains.kotlin.backend.common.lower.irThrow
|
import org.jetbrains.kotlin.backend.common.lower.irThrow
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||||
@@ -19,7 +20,6 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
|||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
|
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.ir.util.irBuilder
|
|
||||||
import org.jetbrains.kotlin.ir.util.irCatch
|
import org.jetbrains.kotlin.ir.util.irCatch
|
||||||
import org.jetbrains.kotlin.konan.ForeignExceptionMode
|
import org.jetbrains.kotlin.konan.ForeignExceptionMode
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -74,7 +74,7 @@ internal class KotlinBridgeBuilder(
|
|||||||
) {
|
) {
|
||||||
private var counter = 0
|
private var counter = 0
|
||||||
private val bridge: IrFunction = createKotlinBridge(startOffset, endOffset, cName, stubs, isExternal, foreignExceptionMode, origin)
|
private val bridge: IrFunction = createKotlinBridge(startOffset, endOffset, cName, stubs, isExternal, foreignExceptionMode, origin)
|
||||||
val irBuilder: IrBuilderWithScope = irBuilder(stubs.irBuiltIns, bridge.symbol).at(startOffset, endOffset)
|
val irBuilder: IrBuilderWithScope = stubs.irBuiltIns.createIrBuilder(bridge.symbol).at(startOffset, endOffset)
|
||||||
|
|
||||||
fun addParameter(type: IrType): IrValueParameter {
|
fun addParameter(type: IrType): IrValueParameter {
|
||||||
val index = counter++
|
val index = counter++
|
||||||
|
|||||||
+2
-1
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.findDeclarationByName
|
import org.jetbrains.kotlin.backend.konan.ir.interop.findDeclarationByName
|
||||||
@@ -55,7 +56,7 @@ internal class CEnumByValueFunctionGenerator(
|
|||||||
// }
|
// }
|
||||||
// throw NPE
|
// throw NPE
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
byValueIrFunction.body = irBuilder(irBuiltIns, byValueIrFunction.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
byValueIrFunction.body = irBuiltIns.createIrBuilder(byValueIrFunction.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+irReturn(irBlock {
|
+irReturn(irBlock {
|
||||||
val values = irTemporary(irCall(valuesIrFunctionSymbol), isMutable = true)
|
val values = irTemporary(irCall(valuesIrFunctionSymbol), isMutable = true)
|
||||||
val inductionVariable = irTemporary(irInt(0), isMutable = true)
|
val inductionVariable = irTemporary(irInt(0), isMutable = true)
|
||||||
|
|||||||
+4
-3
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.enumEntries
|
import org.jetbrains.kotlin.backend.konan.descriptors.enumEntries
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.findDeclarationByName
|
import org.jetbrains.kotlin.backend.konan.ir.interop.findDeclarationByName
|
||||||
@@ -101,7 +102,7 @@ internal class CEnumClassGenerator(
|
|||||||
propertyDescriptor, propertyDescriptor.type.toIrType(), DescriptorVisibilities.PRIVATE
|
propertyDescriptor, propertyDescriptor.type.toIrType(), DescriptorVisibilities.PRIVATE
|
||||||
).also {
|
).also {
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
it.initializer = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
it.initializer = irBuiltIns.createIrBuilder(it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
||||||
irExprBody(irGet(irClass.primaryConstructor!!.valueParameters[0]))
|
irExprBody(irGet(irClass.primaryConstructor!!.valueParameters[0]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,7 +111,7 @@ internal class CEnumClassGenerator(
|
|||||||
val getter = irProperty.getter!!
|
val getter = irProperty.getter!!
|
||||||
getter.correspondingPropertySymbol = irProperty.symbol
|
getter.correspondingPropertySymbol = irProperty.symbol
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
getter.body = irBuilder(irBuiltIns, getter.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
getter.body = irBuiltIns.createIrBuilder(getter.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+irReturn(
|
+irReturn(
|
||||||
irGetField(
|
irGetField(
|
||||||
irGet(getter.dispatchReceiverParameter!!),
|
irGet(getter.dispatchReceiverParameter!!),
|
||||||
@@ -161,7 +162,7 @@ internal class CEnumClassGenerator(
|
|||||||
val classSymbol = symbolTable.descriptorExtension.referenceClass(descriptor)
|
val classSymbol = symbolTable.descriptorExtension.referenceClass(descriptor)
|
||||||
val type = descriptor.defaultType.toIrType()
|
val type = descriptor.defaultType.toIrType()
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET)
|
irConstructor.body = irBuiltIns.createIrBuilder(irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET)
|
||||||
.irBlockBody {
|
.irBlockBody {
|
||||||
+IrEnumConstructorCallImpl(
|
+IrEnumConstructorCallImpl(
|
||||||
startOffset, endOffset,
|
startOffset, endOffset,
|
||||||
|
|||||||
+3
-2
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.getArgumentValueOrNull
|
import org.jetbrains.kotlin.backend.konan.descriptors.getArgumentValueOrNull
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.irInstanceInitializer
|
import org.jetbrains.kotlin.backend.konan.ir.interop.irInstanceInitializer
|
||||||
@@ -56,7 +57,7 @@ internal class CEnumCompanionGenerator(
|
|||||||
val classSymbol = symbolTable.descriptorExtension.referenceClass(companionObjectDescriptor)
|
val classSymbol = symbolTable.descriptorExtension.referenceClass(companionObjectDescriptor)
|
||||||
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also {
|
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also {
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
it.body = irBuiltIns.createIrBuilder(it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType,
|
startOffset, endOffset, context.irBuiltIns.unitType,
|
||||||
superConstructorSymbol
|
superConstructorSymbol
|
||||||
@@ -85,7 +86,7 @@ internal class CEnumCompanionGenerator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun generateAliasGetterBody(getter: IrSimpleFunction, entrySymbol: IrEnumEntrySymbol, enumClass: IrClass): IrBody =
|
private fun generateAliasGetterBody(getter: IrSimpleFunction, entrySymbol: IrEnumEntrySymbol, enumClass: IrClass): IrBody =
|
||||||
irBuilder(irBuiltIns, getter.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irBuiltIns.createIrBuilder(getter.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+irReturn(
|
+irReturn(
|
||||||
IrGetEnumValueImpl(startOffset, endOffset, enumClass.defaultType, entrySymbol)
|
IrGetEnumValueImpl(startOffset, endOffset, enumClass.defaultType, entrySymbol)
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-3
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
package org.jetbrains.kotlin.backend.konan.ir.interop.cenum
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.getArgumentValueOrNull
|
import org.jetbrains.kotlin.backend.konan.descriptors.getArgumentValueOrNull
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
||||||
@@ -23,7 +24,6 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
|
|||||||
import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET
|
import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
||||||
import org.jetbrains.kotlin.ir.util.irBuilder
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext
|
import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext
|
||||||
@@ -61,7 +61,7 @@ internal class CEnumVarClassGenerator(
|
|||||||
val irConstructor = createConstructor(enumVarClass.descriptor.unsubstitutedPrimaryConstructor!!)
|
val irConstructor = createConstructor(enumVarClass.descriptor.unsubstitutedPrimaryConstructor!!)
|
||||||
val classSymbol = symbolTable.descriptorExtension.referenceClass(enumVarClass.descriptor)
|
val classSymbol = symbolTable.descriptorExtension.referenceClass(enumVarClass.descriptor)
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuiltIns.createIrBuilder(irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType, symbols.enumVarConstructorSymbol
|
startOffset, endOffset, context.irBuiltIns.unitType, symbols.enumVarConstructorSymbol
|
||||||
).also {
|
).also {
|
||||||
@@ -85,7 +85,7 @@ internal class CEnumVarClassGenerator(
|
|||||||
val classSymbol = symbolTable.descriptorExtension.referenceClass(companionObjectDescriptor)
|
val classSymbol = symbolTable.descriptorExtension.referenceClass(companionObjectDescriptor)
|
||||||
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also {
|
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also {
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
it.body = irBuiltIns.createIrBuilder(it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType,
|
startOffset, endOffset, context.irBuiltIns.unitType,
|
||||||
symbols.primitiveVarPrimaryConstructor
|
symbols.primitiveVarPrimaryConstructor
|
||||||
|
|||||||
+8
-7
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.kotlin.backend.konan.ir.interop.cstruct
|
package org.jetbrains.kotlin.backend.konan.ir.interop.cstruct
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.konan.RuntimeNames
|
import org.jetbrains.kotlin.backend.konan.RuntimeNames
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
import org.jetbrains.kotlin.backend.konan.ir.interop.DescriptorToIrTranslationMixin
|
||||||
@@ -101,7 +102,7 @@ internal class CStructVarClassGenerator(
|
|||||||
|
|
||||||
val getPtr = symbols.interopGetPtr
|
val getPtr = symbols.interopGetPtr
|
||||||
|
|
||||||
destroy.body = irBuilder(irBuiltIns, destroy.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET)
|
destroy.body = irBuiltIns.createIrBuilder(destroy.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET)
|
||||||
.irBlockBody {
|
.irBlockBody {
|
||||||
+irCall(companionDestroy).apply {
|
+irCall(companionDestroy).apply {
|
||||||
dispatchReceiver = irGetObject(irClass.companionObject()!!.symbol)
|
dispatchReceiver = irGetObject(irClass.companionObject()!!.symbol)
|
||||||
@@ -157,12 +158,12 @@ internal class CStructVarClassGenerator(
|
|||||||
DescriptorVisibilities.PRIVATE
|
DescriptorVisibilities.PRIVATE
|
||||||
).also {
|
).also {
|
||||||
it.parent = irClass
|
it.parent = irClass
|
||||||
it.initializer = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
it.initializer = irBuiltIns.createIrBuilder(it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
||||||
irExprBody(irGet(irClass.primaryConstructor!!.valueParameters[1]))
|
irExprBody(irGet(irClass.primaryConstructor!!.valueParameters[1]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
managedVal.getter!!.body = irBuilder(irBuiltIns, managedVal.getter!!.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET)
|
managedVal.getter!!.body = irBuiltIns.createIrBuilder(managedVal.getter!!.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET)
|
||||||
.irBlockBody {
|
.irBlockBody {
|
||||||
+irReturn(irGetField(irGet(managedVal.getter!!.dispatchReceiverParameter!!), managedVal.backingField!!))
|
+irReturn(irGetField(irGet(managedVal.getter!!.dispatchReceiverParameter!!), managedVal.backingField!!))
|
||||||
|
|
||||||
@@ -181,7 +182,7 @@ internal class CStructVarClassGenerator(
|
|||||||
isExternal = false,
|
isExternal = false,
|
||||||
).also { field ->
|
).also { field ->
|
||||||
field.parent = irClass
|
field.parent = irClass
|
||||||
field.initializer = irBuilder(irBuiltIns, field.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
field.initializer = irBuiltIns.createIrBuilder(field.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
||||||
val lambda = context.irFactory.buildFun {
|
val lambda = context.irFactory.buildFun {
|
||||||
startOffset = SYNTHETIC_OFFSET
|
startOffset = SYNTHETIC_OFFSET
|
||||||
endOffset = SYNTHETIC_OFFSET
|
endOffset = SYNTHETIC_OFFSET
|
||||||
@@ -268,7 +269,7 @@ internal class CStructVarClassGenerator(
|
|||||||
if (!irClass.descriptor.annotations.hasAnnotation(RuntimeNames.managedType)) {
|
if (!irClass.descriptor.annotations.hasAnnotation(RuntimeNames.managedType)) {
|
||||||
return createConstructor(irClass.descriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
return createConstructor(irClass.descriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuiltIns.createIrBuilder(irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
||||||
startOffset, endOffset,
|
startOffset, endOffset,
|
||||||
context.irBuiltIns.unitType, symbols.cStructVarConstructorSymbol
|
context.irBuiltIns.unitType, symbols.cStructVarConstructorSymbol
|
||||||
@@ -282,7 +283,7 @@ internal class CStructVarClassGenerator(
|
|||||||
} else {
|
} else {
|
||||||
return createConstructor(irClass.descriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
return createConstructor(irClass.descriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuiltIns.createIrBuilder(irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
||||||
startOffset, endOffset,
|
startOffset, endOffset,
|
||||||
context.irBuiltIns.unitType, symbols.managedTypeConstructor
|
context.irBuiltIns.unitType, symbols.managedTypeConstructor
|
||||||
@@ -300,7 +301,7 @@ internal class CStructVarClassGenerator(
|
|||||||
private fun createSecondaryConstructor(descriptor: ClassConstructorDescriptor): IrConstructor {
|
private fun createSecondaryConstructor(descriptor: ClassConstructorDescriptor): IrConstructor {
|
||||||
return createConstructor(descriptor).also {
|
return createConstructor(descriptor).also {
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
it.body = irBuiltIns.createIrBuilder(it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
// Empty. The real body is constructed at the call site by the interop lowering phase.
|
// Empty. The real body is constructed at the call site by the interop lowering phase.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.kotlin.backend.konan.ir.interop.cstruct
|
package org.jetbrains.kotlin.backend.konan.ir.interop.cstruct
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.konan.RuntimeNames
|
import org.jetbrains.kotlin.backend.konan.RuntimeNames
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.getArgumentValueOrNull
|
import org.jetbrains.kotlin.backend.konan.descriptors.getArgumentValueOrNull
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||||
@@ -68,7 +69,7 @@ internal class CStructVarCompanionGenerator(
|
|||||||
if (companionObjectDescriptor.containingDeclaration.annotations.hasAnnotation(RuntimeNames.managedType)) {
|
if (companionObjectDescriptor.containingDeclaration.annotations.hasAnnotation(RuntimeNames.managedType)) {
|
||||||
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuiltIns.createIrBuilder(irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType,
|
startOffset, endOffset, context.irBuiltIns.unitType,
|
||||||
irBuiltIns.anyClass.owner.primaryConstructor!!.symbol
|
irBuiltIns.anyClass.owner.primaryConstructor!!.symbol
|
||||||
@@ -80,7 +81,7 @@ internal class CStructVarCompanionGenerator(
|
|||||||
} else {
|
} else {
|
||||||
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
return createConstructor(companionObjectDescriptor.unsubstitutedPrimaryConstructor!!).also { irConstructor ->
|
||||||
postLinkageSteps.add {
|
postLinkageSteps.add {
|
||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuiltIns.createIrBuilder(irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
+IrDelegatingConstructorCallImpl.fromSymbolOwner(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType,
|
startOffset, endOffset, context.irBuiltIns.unitType,
|
||||||
symbols.structVarPrimaryConstructor
|
symbols.structVarPrimaryConstructor
|
||||||
|
|||||||
+12
-23
@@ -5,50 +5,39 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.util
|
package org.jetbrains.kotlin.ir.util
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
|
||||||
import org.jetbrains.kotlin.backend.konan.KonanBackendContext
|
import org.jetbrains.kotlin.backend.konan.KonanBackendContext
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.buildSimpleAnnotation
|
import org.jetbrains.kotlin.backend.konan.ir.buildSimpleAnnotation
|
||||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||||
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
|
||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
|
||||||
import org.jetbrains.kotlin.ir.IrFileEntry
|
import org.jetbrains.kotlin.ir.IrFileEntry
|
||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.builders.IrBuilderWithScope
|
||||||
import org.jetbrains.kotlin.ir.builders.*
|
import org.jetbrains.kotlin.ir.builders.irCall
|
||||||
|
import org.jetbrains.kotlin.ir.builders.parent
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
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.symbols.*
|
import org.jetbrains.kotlin.ir.expressions.impl.IrCatchImpl
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrVariableSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrVariableSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
import org.jetbrains.kotlin.ir.types.classifierOrFail
|
||||||
import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
|
import org.jetbrains.kotlin.ir.types.makeNullable
|
||||||
|
import org.jetbrains.kotlin.ir.types.typeWith
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.calls.checkers.isRestrictsSuspensionReceiver
|
import org.jetbrains.kotlin.resolve.calls.checkers.isRestrictsSuspensionReceiver
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import java.lang.reflect.Proxy
|
|
||||||
|
|
||||||
internal fun irBuilder(
|
|
||||||
irBuiltIns: IrBuiltIns,
|
|
||||||
scopeOwnerSymbol: IrSymbol,
|
|
||||||
startOffset: Int = UNDEFINED_OFFSET,
|
|
||||||
endOffset: Int = UNDEFINED_OFFSET
|
|
||||||
): IrBuilderWithScope =
|
|
||||||
object : IrBuilderWithScope(
|
|
||||||
IrGeneratorContextBase(irBuiltIns),
|
|
||||||
Scope(scopeOwnerSymbol),
|
|
||||||
startOffset,
|
|
||||||
endOffset
|
|
||||||
) {}
|
|
||||||
|
|
||||||
private var topLevelInitializersCounter = 0
|
private var topLevelInitializersCounter = 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user