IR: use IrFactory in misc utils

This commit is contained in:
Alexander Udalov
2020-07-14 14:36:13 +02:00
parent f359f36ed9
commit 898dd20a9e
12 changed files with 39 additions and 41 deletions
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildFun
import org.jetbrains.kotlin.ir.builders.declarations.buildReceiverParameter
import org.jetbrains.kotlin.ir.builders.declarations.buildTypeParameter
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
import org.jetbrains.kotlin.ir.descriptors.*
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.*
@@ -154,7 +152,7 @@ fun IrValueParameter.copyTo(
}
}
}
return IrValueParameterImpl(
return factory.createValueParameter(
startOffset, endOffset, origin, symbol,
name, index, type, varargElementType, isCrossinline, isNoinline
).also {
@@ -179,7 +177,7 @@ fun IrTypeParameter.copyToWithoutSuperTypes(
@OptIn(ObsoleteDescriptorBasedAPI::class)
fun IrFunction.copyReceiverParametersFrom(from: IrFunction) {
dispatchReceiverParameter = from.dispatchReceiverParameter?.run {
IrValueParameterImpl(
factory.createValueParameter(
startOffset, endOffset, origin, IrValueParameterSymbolImpl(descriptor), descriptor.name,
descriptor.indexOrMinusOne, type, varargElementType, descriptor.isCrossinline,
descriptor.isNoinline
@@ -427,7 +425,7 @@ fun IrClass.createParameterDeclarations() {
fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = null) {
assert(dispatchReceiverParameter == null)
dispatchReceiverParameter = IrValueParameterImpl(
dispatchReceiverParameter = factory.createValueParameter(
startOffset, endOffset,
origin ?: parentAsClass.origin,
IrValueParameterSymbolImpl(parentAsClass.thisReceiver!!.descriptor),
@@ -512,7 +510,7 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
fun createStaticFunctionWithReceivers(
fun IrFactory.createStaticFunctionWithReceivers(
irParent: IrDeclarationParent,
name: Name,
oldFunction: IrFunction,
@@ -527,7 +525,7 @@ fun createStaticFunctionWithReceivers(
val descriptor = (oldFunction.descriptor as? DescriptorWithContainerSource)?.let {
WrappedFunctionDescriptorWithContainerSource(it.containerSource)
} ?: WrappedSimpleFunctionDescriptor(Annotations.EMPTY, oldFunction.descriptor.source)
return IrFunctionImpl(
return createFunction(
oldFunction.startOffset, oldFunction.endOffset,
origin,
IrSimpleFunctionSymbolImpl(descriptor),
@@ -16,7 +16,6 @@ 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.IrBlockBodyImpl
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
@@ -258,5 +257,7 @@ class InlineClassLowering(val context: CommonBackendContext) {
}
private fun createStaticBodilessMethod(function: IrFunction): IrSimpleFunction =
createStaticFunctionWithReceivers(function.parent, function.name.toInlineClassImplementationName(), function)
context.irFactory.createStaticFunctionWithReceivers(
function.parent, function.name.toInlineClassImplementationName(), function
)
}