[kotlin compiler][update] adoption [type,value]ArgumentCount
This commit is contained in:
+1
-1
@@ -88,7 +88,7 @@ internal data class ExternalLoweredEnum(
|
|||||||
override val entriesMap: Map<Name, Int>
|
override val entriesMap: Map<Name, Int>
|
||||||
) : LoweredEnumAccess {
|
) : LoweredEnumAccess {
|
||||||
override fun getValuesField(startOffset: Int, endOffset: Int): IrExpression =
|
override fun getValuesField(startOffset: Int, endOffset: Int): IrExpression =
|
||||||
IrCallImpl(startOffset, endOffset, valuesGetter.returnType, valuesGetter.symbol)
|
IrCallImpl(startOffset, endOffset, valuesGetter.returnType, valuesGetter.symbol, valuesGetter.typeParameters.size, valuesGetter.valueParameters.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class EnumSpecialDeclarationsFactory(val context: Context) {
|
internal class EnumSpecialDeclarationsFactory(val context: Context) {
|
||||||
|
|||||||
+1
-1
@@ -368,7 +368,7 @@ internal val useInternalAbiPhase = makeKonanModuleOpPhase(
|
|||||||
context.internalAbi.reference(it, irClass.module)
|
context.internalAbi.reference(it, irClass.module)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return IrCallImpl(expression.startOffset, expression.endOffset, expression.type, accessor.symbol)
|
return IrCallImpl(expression.startOffset, expression.endOffset, expression.type, accessor.symbol, accessor.typeParameters.size, accessor.valueParameters.size)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.transformChildrenVoid(transformer)
|
module.transformChildrenVoid(transformer)
|
||||||
|
|||||||
+1
@@ -553,6 +553,7 @@ internal fun KotlinStubs.generateCFunctionPointer(
|
|||||||
expression.type,
|
expression.type,
|
||||||
fakeFunction.symbol,
|
fakeFunction.symbol,
|
||||||
typeArgumentsCount = 0,
|
typeArgumentsCount = 0,
|
||||||
|
fakeFunction.valueParameters.size,
|
||||||
reflectionTarget = null
|
reflectionTarget = null
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-3
@@ -64,7 +64,8 @@ internal class KonanSharedVariablesManager(val context: KonanBackendContext) : S
|
|||||||
|
|
||||||
val sharedVariableInitialization =
|
val sharedVariableInitialization =
|
||||||
IrCallImpl(initializer.startOffset, initializer.endOffset,
|
IrCallImpl(initializer.startOffset, initializer.endOffset,
|
||||||
context.irBuiltIns.unitType, elementProperty.setter!!.symbol)
|
context.irBuiltIns.unitType, elementProperty.setter!!.symbol,
|
||||||
|
elementProperty.setter!!.typeParameters.size, elementProperty.setter!!.valueParameters.size)
|
||||||
|
|
||||||
sharedVariableInitialization.dispatchReceiver =
|
sharedVariableInitialization.dispatchReceiver =
|
||||||
IrGetValueImpl(initializer.startOffset, initializer.endOffset,
|
IrGetValueImpl(initializer.startOffset, initializer.endOffset,
|
||||||
@@ -80,7 +81,8 @@ internal class KonanSharedVariablesManager(val context: KonanBackendContext) : S
|
|||||||
|
|
||||||
override fun getSharedValue(sharedVariableSymbol: IrVariableSymbol, originalGet: IrGetValue) =
|
override fun getSharedValue(sharedVariableSymbol: IrVariableSymbol, originalGet: IrGetValue) =
|
||||||
IrCallImpl(originalGet.startOffset, originalGet.endOffset,
|
IrCallImpl(originalGet.startOffset, originalGet.endOffset,
|
||||||
originalGet.type, elementProperty.getter!!.symbol).apply {
|
originalGet.type, elementProperty.getter!!.symbol,
|
||||||
|
elementProperty.getter!!.typeParameters.size, elementProperty.getter!!.valueParameters.size).apply {
|
||||||
dispatchReceiver = IrGetValueImpl(
|
dispatchReceiver = IrGetValueImpl(
|
||||||
originalGet.startOffset, originalGet.endOffset,
|
originalGet.startOffset, originalGet.endOffset,
|
||||||
sharedVariableSymbol.owner.type, sharedVariableSymbol
|
sharedVariableSymbol.owner.type, sharedVariableSymbol
|
||||||
@@ -89,7 +91,8 @@ internal class KonanSharedVariablesManager(val context: KonanBackendContext) : S
|
|||||||
|
|
||||||
override fun setSharedValue(sharedVariableSymbol: IrVariableSymbol, originalSet: IrSetValue) =
|
override fun setSharedValue(sharedVariableSymbol: IrVariableSymbol, originalSet: IrSetValue) =
|
||||||
IrCallImpl(originalSet.startOffset, originalSet.endOffset, context.irBuiltIns.unitType,
|
IrCallImpl(originalSet.startOffset, originalSet.endOffset, context.irBuiltIns.unitType,
|
||||||
elementProperty.setter!!.symbol).apply {
|
elementProperty.setter!!.symbol, elementProperty.setter!!.typeParameters.size,
|
||||||
|
elementProperty.setter!!.valueParameters.size).apply {
|
||||||
dispatchReceiver = IrGetValueImpl(
|
dispatchReceiver = IrGetValueImpl(
|
||||||
originalSet.startOffset, originalSet.endOffset,
|
originalSet.startOffset, originalSet.endOffset,
|
||||||
sharedVariableSymbol.owner.type, sharedVariableSymbol
|
sharedVariableSymbol.owner.type, sharedVariableSymbol
|
||||||
|
|||||||
-2
@@ -7,8 +7,6 @@ package org.jetbrains.kotlin.backend.konan.ir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.atMostOne
|
import org.jetbrains.kotlin.backend.common.atMostOne
|
||||||
import org.jetbrains.kotlin.backend.konan.DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION
|
import org.jetbrains.kotlin.backend.konan.DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
|
|||||||
+3
-1
@@ -54,7 +54,9 @@ internal class CEnumCompanionGenerator(
|
|||||||
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl(
|
+IrDelegatingConstructorCallImpl(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType,
|
startOffset, endOffset, context.irBuiltIns.unitType,
|
||||||
superConstructorSymbol
|
superConstructorSymbol,
|
||||||
|
superConstructorSymbol.owner.typeParameters.size,
|
||||||
|
superConstructorSymbol.owner.valueParameters.size
|
||||||
)
|
)
|
||||||
+irInstanceInitializer(symbolTable.referenceClass(companionObjectDescriptor))
|
+irInstanceInitializer(symbolTable.referenceClass(companionObjectDescriptor))
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-2
@@ -58,7 +58,9 @@ internal class CEnumVarClassGenerator(
|
|||||||
)
|
)
|
||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl(
|
+IrDelegatingConstructorCallImpl(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType, enumVarConstructorSymbol
|
startOffset, endOffset, context.irBuiltIns.unitType, enumVarConstructorSymbol,
|
||||||
|
enumVarConstructorSymbol.owner.typeParameters.size,
|
||||||
|
enumVarConstructorSymbol.owner.valueParameters.size
|
||||||
).also {
|
).also {
|
||||||
it.putValueArgument(0, irGet(irConstructor.valueParameters[0]))
|
it.putValueArgument(0, irGet(irConstructor.valueParameters[0]))
|
||||||
}
|
}
|
||||||
@@ -81,7 +83,9 @@ internal class CEnumVarClassGenerator(
|
|||||||
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl(
|
+IrDelegatingConstructorCallImpl(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType,
|
startOffset, endOffset, context.irBuiltIns.unitType,
|
||||||
superConstructorSymbol
|
superConstructorSymbol,
|
||||||
|
superConstructorSymbol.owner.typeParameters.size,
|
||||||
|
superConstructorSymbol.owner.valueParameters.size
|
||||||
).also {
|
).also {
|
||||||
it.putValueArgument(0, irInt(typeSize))
|
it.putValueArgument(0, irInt(typeSize))
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -64,7 +64,9 @@ internal class CStructVarClassGenerator(
|
|||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl(
|
+IrDelegatingConstructorCallImpl(
|
||||||
startOffset, endOffset,
|
startOffset, endOffset,
|
||||||
context.irBuiltIns.unitType, enumVarConstructorSymbol
|
context.irBuiltIns.unitType, enumVarConstructorSymbol,
|
||||||
|
irConstructor.typeParameters.size,
|
||||||
|
1
|
||||||
).also {
|
).also {
|
||||||
it.putValueArgument(0, irGet(irConstructor.valueParameters[0]))
|
it.putValueArgument(0, irGet(irConstructor.valueParameters[0]))
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -48,7 +48,9 @@ internal class CStructVarCompanionGenerator(
|
|||||||
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
|
||||||
+IrDelegatingConstructorCallImpl(
|
+IrDelegatingConstructorCallImpl(
|
||||||
startOffset, endOffset, context.irBuiltIns.unitType,
|
startOffset, endOffset, context.irBuiltIns.unitType,
|
||||||
superConstructorSymbol
|
superConstructorSymbol,
|
||||||
|
irConstructor.typeParameters.size,
|
||||||
|
2
|
||||||
).also {
|
).also {
|
||||||
it.putValueArgument(0, irLong(size))
|
it.putValueArgument(0, irLong(size))
|
||||||
it.putValueArgument(1, irInt(align))
|
it.putValueArgument(1, irInt(align))
|
||||||
|
|||||||
+8
-3
@@ -97,7 +97,9 @@ private class AutoboxingTransformer(val context: Context) : AbstractValueUsageTr
|
|||||||
startOffset,
|
startOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
symbols.getNativeNullPtr.owner.returnType,
|
symbols.getNativeNullPtr.owner.returnType,
|
||||||
symbols.getNativeNullPtr
|
symbols.getNativeNullPtr,
|
||||||
|
symbols.getNativeNullPtr.owner.typeParameters.size,
|
||||||
|
symbols.getNativeNullPtr.owner.valueParameters.size
|
||||||
).uncheckedCast(type)
|
).uncheckedCast(type)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +166,8 @@ private class AutoboxingTransformer(val context: Context) : AbstractValueUsageTr
|
|||||||
val parameter = conversion.owner.explicitParameters.single()
|
val parameter = conversion.owner.explicitParameters.single()
|
||||||
val argument = this.uncheckedCast(parameter.type)
|
val argument = this.uncheckedCast(parameter.type)
|
||||||
|
|
||||||
IrCallImpl(startOffset, endOffset, conversion.owner.returnType, conversion).apply {
|
IrCallImpl(startOffset, endOffset, conversion.owner.returnType, conversion,
|
||||||
|
conversion.owner.typeParameters.size, conversion.owner.valueParameters.size).apply {
|
||||||
addArguments(mapOf(parameter to argument))
|
addArguments(mapOf(parameter to argument))
|
||||||
}.uncheckedCast(this.type) // Try not to bring new type incompatibilities.
|
}.uncheckedCast(this.type) // Try not to bring new type incompatibilities.
|
||||||
}
|
}
|
||||||
@@ -273,7 +276,9 @@ private class InlineClassTransformer(private val context: Context) : IrBuildingT
|
|||||||
IrBlockImpl(startOffset, endOffset, irBuiltIns.unitType).apply {
|
IrBlockImpl(startOffset, endOffset, irBuiltIns.unitType).apply {
|
||||||
statements.addIfNotNull(expression.receiver)
|
statements.addIfNotNull(expression.receiver)
|
||||||
statements += expression.value
|
statements += expression.value
|
||||||
statements += IrCallImpl(startOffset, endOffset, irBuiltIns.nothingType, symbols.throwNullPointerException)
|
statements += IrCallImpl(startOffset, endOffset, irBuiltIns.nothingType, symbols.throwNullPointerException,
|
||||||
|
symbols.throwNullPointerException.owner.typeParameters.size,
|
||||||
|
symbols.throwNullPointerException.owner.valueParameters.size)
|
||||||
statements += IrGetObjectValueImpl(startOffset, endOffset, irBuiltIns.unitType, irBuiltIns.unitClass)
|
statements += IrGetObjectValueImpl(startOffset, endOffset, irBuiltIns.unitType, irBuiltIns.unitClass)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+3
@@ -119,6 +119,7 @@ internal class WorkersBridgesBuilding(val context: Context) : DeclarationContain
|
|||||||
type = job.type,
|
type = job.type,
|
||||||
symbol = bridge.symbol,
|
symbol = bridge.symbol,
|
||||||
typeArgumentsCount = 0,
|
typeArgumentsCount = 0,
|
||||||
|
valueArgumentsCount = bridge.symbol.owner.valueParameters.size,
|
||||||
reflectionTarget = null)
|
reflectionTarget = null)
|
||||||
)
|
)
|
||||||
return expression
|
return expression
|
||||||
@@ -238,6 +239,8 @@ private fun Context.buildBridge(startOffset: Int, endOffset: Int,
|
|||||||
endOffset,
|
endOffset,
|
||||||
targetSymbol.owner.returnType,
|
targetSymbol.owner.returnType,
|
||||||
targetSymbol,
|
targetSymbol,
|
||||||
|
typeArgumentsCount = targetSymbol.owner.typeParameters.size,
|
||||||
|
valueArgumentsCount = targetSymbol.owner.valueParameters.size,
|
||||||
superQualifierSymbol = superQualifierSymbol /* Call non-virtually */
|
superQualifierSymbol = superQualifierSymbol /* Call non-virtually */
|
||||||
).apply {
|
).apply {
|
||||||
bridge.dispatchReceiverParameter?.let {
|
bridge.dispatchReceiverParameter?.let {
|
||||||
|
|||||||
+3
-1
@@ -58,7 +58,9 @@ internal class BuiltinOperatorLowering(val context: Context) : FileLoweringPass,
|
|||||||
|
|
||||||
irBuiltins.noWhenBranchMatchedExceptionSymbol -> IrCallImpl(expression.startOffset, expression.endOffset,
|
irBuiltins.noWhenBranchMatchedExceptionSymbol -> IrCallImpl(expression.startOffset, expression.endOffset,
|
||||||
context.ir.symbols.throwNoWhenBranchMatchedException.owner.returnType,
|
context.ir.symbols.throwNoWhenBranchMatchedException.owner.returnType,
|
||||||
context.ir.symbols.throwNoWhenBranchMatchedException)
|
context.ir.symbols.throwNoWhenBranchMatchedException,
|
||||||
|
context.ir.symbols.throwNoWhenBranchMatchedException.owner.typeParameters.size,
|
||||||
|
context.ir.symbols.throwNoWhenBranchMatchedException.owner.valueParameters.size)
|
||||||
|
|
||||||
else -> expression
|
else -> expression
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -113,9 +113,12 @@ internal class EnumUsageLowering(val context: Context)
|
|||||||
return IrCallImpl(
|
return IrCallImpl(
|
||||||
startOffset, endOffset, enumClass.defaultType,
|
startOffset, endOffset, enumClass.defaultType,
|
||||||
loweredEnum.itemGetterSymbol.owner.symbol,
|
loweredEnum.itemGetterSymbol.owner.symbol,
|
||||||
typeArgumentsCount = 0
|
typeArgumentsCount = 0,
|
||||||
|
loweredEnum.itemGetterSymbol.owner.valueParameters.size
|
||||||
).apply {
|
).apply {
|
||||||
dispatchReceiver = IrCallImpl(startOffset, endOffset, loweredEnum.valuesGetter.returnType, loweredEnum.valuesGetter.symbol)
|
dispatchReceiver = IrCallImpl(startOffset, endOffset, loweredEnum.valuesGetter.returnType,
|
||||||
|
loweredEnum.valuesGetter.symbol, loweredEnum.valuesGetter.typeParameters.size,
|
||||||
|
loweredEnum.valuesGetter.valueParameters.size)
|
||||||
putValueArgument(0, IrConstImpl.int(startOffset, endOffset, context.irBuiltIns.intType, ordinal))
|
putValueArgument(0, IrConstImpl.int(startOffset, endOffset, context.irBuiltIns.intType, ordinal))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-3
@@ -179,7 +179,9 @@ internal class EnumConstructorsLowering(val context: Context) : ClassLoweringPas
|
|||||||
val result = IrDelegatingConstructorCallImpl(
|
val result = IrDelegatingConstructorCallImpl(
|
||||||
startOffset, endOffset,
|
startOffset, endOffset,
|
||||||
context.irBuiltIns.unitType,
|
context.irBuiltIns.unitType,
|
||||||
enumConstructorCall.symbol)
|
enumConstructorCall.symbol,
|
||||||
|
enumConstructorCall.symbol.owner.typeParameters.size,
|
||||||
|
enumConstructorCall.symbol.owner.valueParameters.size)
|
||||||
|
|
||||||
assert(result.symbol.owner.valueParameters.size == 2) {
|
assert(result.symbol.owner.valueParameters.size == 2) {
|
||||||
"Enum(String, Int) constructor call expected:\n${result.dump()}"
|
"Enum(String, Int) constructor call expected:\n${result.dump()}"
|
||||||
@@ -214,7 +216,9 @@ internal class EnumConstructorsLowering(val context: Context) : ClassLoweringPas
|
|||||||
val result = IrDelegatingConstructorCallImpl(
|
val result = IrDelegatingConstructorCallImpl(
|
||||||
startOffset, endOffset,
|
startOffset, endOffset,
|
||||||
context.irBuiltIns.unitType,
|
context.irBuiltIns.unitType,
|
||||||
loweredDelegatingConstructor.symbol)
|
loweredDelegatingConstructor.symbol,
|
||||||
|
loweredDelegatingConstructor.symbol.owner.typeParameters.size,
|
||||||
|
loweredDelegatingConstructor.symbol.owner.valueParameters.size)
|
||||||
|
|
||||||
val firstParameter = enumClassConstructor.valueParameters[0]
|
val firstParameter = enumClassConstructor.valueParameters[0]
|
||||||
result.putValueArgument(0,
|
result.putValueArgument(0,
|
||||||
@@ -268,7 +272,8 @@ internal class EnumConstructorsLowering(val context: Context) : ClassLoweringPas
|
|||||||
|
|
||||||
private inner class InEnumEntryClassConstructor(enumEntry: IrEnumEntry) : InEnumEntry(enumEntry) {
|
private inner class InEnumEntryClassConstructor(enumEntry: IrEnumEntry) : InEnumEntry(enumEntry) {
|
||||||
override fun createConstructorCall(startOffset: Int, endOffset: Int, loweredConstructor: IrConstructorSymbol) =
|
override fun createConstructorCall(startOffset: Int, endOffset: Int, loweredConstructor: IrConstructorSymbol) =
|
||||||
IrDelegatingConstructorCallImpl(startOffset, endOffset, context.irBuiltIns.unitType, loweredConstructor)
|
IrDelegatingConstructorCallImpl(startOffset, endOffset, context.irBuiltIns.unitType, loweredConstructor,
|
||||||
|
loweredConstructor.owner.typeParameters.size, loweredConstructor.owner.valueParameters.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class InEnumEntryInitializer(enumEntry: IrEnumEntry) : InEnumEntry(enumEntry) {
|
private inner class InEnumEntryInitializer(enumEntry: IrEnumEntry) : InEnumEntry(enumEntry) {
|
||||||
|
|||||||
+3
-1
@@ -188,7 +188,9 @@ internal class InitializersLowering(val context: CommonBackendContext) : ClassLo
|
|||||||
val startOffset = it.startOffset
|
val startOffset = it.startOffset
|
||||||
val endOffset = it.endOffset
|
val endOffset = it.endOffset
|
||||||
listOf(IrCallImpl(startOffset, endOffset,
|
listOf(IrCallImpl(startOffset, endOffset,
|
||||||
context.irBuiltIns.unitType, initializeMethodSymbol
|
context.irBuiltIns.unitType, initializeMethodSymbol,
|
||||||
|
initializeMethodSymbol.owner.typeParameters.size,
|
||||||
|
initializeMethodSymbol.owner.valueParameters.size
|
||||||
).apply {
|
).apply {
|
||||||
dispatchReceiver = IrGetValueImpl(
|
dispatchReceiver = IrGetValueImpl(
|
||||||
startOffset, endOffset,
|
startOffset, endOffset,
|
||||||
|
|||||||
+3
-1
@@ -655,7 +655,8 @@ private class InteropLoweringPart1(val context: Context) : BaseInteropIrTransfor
|
|||||||
endOffset,
|
endOffset,
|
||||||
context.irBuiltIns.unitType,
|
context.irBuiltIns.unitType,
|
||||||
superConstructor,
|
superConstructor,
|
||||||
0
|
0,
|
||||||
|
superConstructor.owner.valueParameters.size
|
||||||
)
|
)
|
||||||
|
|
||||||
+irCall(symbols.interopObjCObjectSuperInitCheck).apply {
|
+irCall(symbols.interopObjCObjectSuperInitCheck).apply {
|
||||||
@@ -1213,6 +1214,7 @@ private class InteropTransformer(val context: Context, override val irFile: IrFi
|
|||||||
symbols.executeImpl.owner.valueParameters[3].type,
|
symbols.executeImpl.owner.valueParameters[3].type,
|
||||||
targetSymbol,
|
targetSymbol,
|
||||||
typeArgumentsCount = 0,
|
typeArgumentsCount = 0,
|
||||||
|
targetSymbol.owner.valueParameters.size,
|
||||||
reflectionTarget = null)
|
reflectionTarget = null)
|
||||||
|
|
||||||
builder.irCall(symbols.executeImpl).apply {
|
builder.irCall(symbols.executeImpl).apply {
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ internal class RedundantCoercionsCleaner(val context: Context) : FileLoweringPas
|
|||||||
typeOperand, expression)
|
typeOperand, expression)
|
||||||
}
|
}
|
||||||
with (coercion) {
|
with (coercion) {
|
||||||
return IrCallImpl(startOffset, endOffset, type, symbol, typeArgumentsCount, origin).apply {
|
return IrCallImpl(startOffset, endOffset, type, symbol, typeArgumentsCount, symbol.owner.valueParameters.size, origin).apply {
|
||||||
putValueArgument(0, castedExpression)
|
putValueArgument(0, castedExpression)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-3
@@ -334,7 +334,9 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
|
|||||||
// Producer and job of executeImpl are called externally, we need to reflect this somehow.
|
// Producer and job of executeImpl are called externally, we need to reflect this somehow.
|
||||||
val producerInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
|
val producerInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
|
||||||
executeImplProducerInvoke.returnType,
|
executeImplProducerInvoke.returnType,
|
||||||
executeImplProducerInvoke.symbol)
|
executeImplProducerInvoke.symbol,
|
||||||
|
executeImplProducerInvoke.symbol.owner.typeParameters.size,
|
||||||
|
executeImplProducerInvoke.symbol.owner.valueParameters.size)
|
||||||
producerInvocation.dispatchReceiver = expression.getValueArgument(2)
|
producerInvocation.dispatchReceiver = expression.getValueArgument(2)
|
||||||
|
|
||||||
expressions += producerInvocation to currentLoop
|
expressions += producerInvocation to currentLoop
|
||||||
@@ -343,7 +345,9 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
|
|||||||
?: error("A function reference expected")
|
?: error("A function reference expected")
|
||||||
val jobInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
|
val jobInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
|
||||||
jobFunctionReference.symbol.owner.returnType,
|
jobFunctionReference.symbol.owner.returnType,
|
||||||
jobFunctionReference.symbol as IrSimpleFunctionSymbol)
|
jobFunctionReference.symbol as IrSimpleFunctionSymbol,
|
||||||
|
jobFunctionReference.symbol.owner.typeParameters.size,
|
||||||
|
jobFunctionReference.symbol.owner.valueParameters.size)
|
||||||
jobInvocation.putValueArgument(0, producerInvocation)
|
jobInvocation.putValueArgument(0, producerInvocation)
|
||||||
|
|
||||||
expressions += jobInvocation to currentLoop
|
expressions += jobInvocation to currentLoop
|
||||||
@@ -355,7 +359,9 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
|
|||||||
&& expression.typeOperand.isObjCObjectType()) {
|
&& expression.typeOperand.isObjCObjectType()) {
|
||||||
val objcObjGetter = IrCallImpl(expression.startOffset, expression.endOffset,
|
val objcObjGetter = IrCallImpl(expression.startOffset, expression.endOffset,
|
||||||
objCObjectRawValueGetter.owner.returnType,
|
objCObjectRawValueGetter.owner.returnType,
|
||||||
objCObjectRawValueGetter
|
objCObjectRawValueGetter,
|
||||||
|
objCObjectRawValueGetter.owner.typeParameters.size,
|
||||||
|
objCObjectRawValueGetter.owner.valueParameters.size
|
||||||
).apply {
|
).apply {
|
||||||
extensionReceiver = expression.argument
|
extensionReceiver = expression.argument
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -58,7 +58,7 @@ object KonanFakeOverrideClassFilter : FakeOverrideClassFilter {
|
|||||||
private fun IrClass.hasInteropSuperClass() = this.superTypes
|
private fun IrClass.hasInteropSuperClass() = this.superTypes
|
||||||
.mapNotNull { it.classOrNull }
|
.mapNotNull { it.classOrNull }
|
||||||
.filter { it is IrPublicSymbolBase<*> }
|
.filter { it is IrPublicSymbolBase<*> }
|
||||||
.any { it.signature.isInteropSignature() }
|
.any { it.signature?.isInteropSignature() ?: false }
|
||||||
|
|
||||||
override fun needToConstructFakeOverrides(clazz: IrClass): Boolean {
|
override fun needToConstructFakeOverrides(clazz: IrClass): Boolean {
|
||||||
return !clazz.hasInteropSuperClass()
|
return !clazz.hasInteropSuperClass()
|
||||||
|
|||||||
+1
-1
@@ -241,7 +241,7 @@ fun IrBuilderWithScope.irCall(irFunction: IrFunction, typeArguments: List<IrType
|
|||||||
internal fun irCall(startOffset: Int, endOffset: Int, irFunction: IrSimpleFunction, typeArguments: List<IrType>): IrCall =
|
internal fun irCall(startOffset: Int, endOffset: Int, irFunction: IrSimpleFunction, typeArguments: List<IrType>): IrCall =
|
||||||
IrCallImpl(
|
IrCallImpl(
|
||||||
startOffset, endOffset, irFunction.substitutedReturnType(typeArguments),
|
startOffset, endOffset, irFunction.substitutedReturnType(typeArguments),
|
||||||
irFunction.symbol, typeArguments.size
|
irFunction.symbol, typeArguments.size, irFunction.valueParameters.size
|
||||||
).apply {
|
).apply {
|
||||||
typeArguments.forEachIndexed { index, irType ->
|
typeArguments.forEachIndexed { index, irType ->
|
||||||
this.putTypeArgument(index, irType)
|
this.putTypeArgument(index, irType)
|
||||||
|
|||||||
Reference in New Issue
Block a user