Fix IrDelegatingConstructorCallImpl.fromSymbolDescriptor usage.

This commit is contained in:
Sergey Bogolepov
2020-10-28 16:37:28 +07:00
committed by Stanislav Erokhin
parent 6fd872f0be
commit 96d458e35b
6 changed files with 11 additions and 28 deletions
@@ -54,9 +54,7 @@ internal class CEnumCompanionGenerator(
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
+IrDelegatingConstructorCallImpl.fromSymbolDescriptor(
startOffset, endOffset, context.irBuiltIns.unitType,
superConstructorSymbol,
superConstructorSymbol.owner.typeParameters.size,
superConstructorSymbol.owner.valueParameters.size
superConstructorSymbol
)
+irInstanceInitializer(symbolTable.referenceClass(companionObjectDescriptor))
}
@@ -57,10 +57,8 @@ internal class CEnumVarClassGenerator(
interopBuiltIns.cEnumVar.unsubstitutedPrimaryConstructor!!
)
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
+IrDelegatingConstructorCallImpl(
startOffset, endOffset, context.irBuiltIns.unitType, enumVarConstructorSymbol,
enumVarConstructorSymbol.owner.typeParameters.size,
enumVarConstructorSymbol.owner.valueParameters.size
+IrDelegatingConstructorCallImpl.fromSymbolDescriptor(
startOffset, endOffset, context.irBuiltIns.unitType, enumVarConstructorSymbol
).also {
it.putValueArgument(0, irGet(irConstructor.valueParameters[0]))
}
@@ -83,9 +81,7 @@ internal class CEnumVarClassGenerator(
it.body = irBuilder(irBuiltIns, it.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
+IrDelegatingConstructorCallImpl.fromSymbolDescriptor(
startOffset, endOffset, context.irBuiltIns.unitType,
superConstructorSymbol,
superConstructorSymbol.owner.typeParameters.size,
superConstructorSymbol.owner.valueParameters.size
superConstructorSymbol
).also {
it.putValueArgument(0, irInt(typeSize))
}
@@ -64,9 +64,7 @@ internal class CStructVarClassGenerator(
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
+IrDelegatingConstructorCallImpl.fromSymbolDescriptor(
startOffset, endOffset,
context.irBuiltIns.unitType, enumVarConstructorSymbol,
irConstructor.typeParameters.size,
1
context.irBuiltIns.unitType, enumVarConstructorSymbol
).also {
it.putValueArgument(0, irGet(irConstructor.valueParameters[0]))
}
@@ -48,9 +48,7 @@ internal class CStructVarCompanionGenerator(
irConstructor.body = irBuilder(irBuiltIns, irConstructor.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).irBlockBody {
+IrDelegatingConstructorCallImpl.fromSymbolDescriptor(
startOffset, endOffset, context.irBuiltIns.unitType,
superConstructorSymbol,
irConstructor.typeParameters.size,
2
superConstructorSymbol
).also {
it.putValueArgument(0, irLong(size))
it.putValueArgument(1, irInt(align))
@@ -179,10 +179,8 @@ internal class EnumConstructorsLowering(val context: Context) : ClassLoweringPas
val result = IrDelegatingConstructorCallImpl.fromSymbolDescriptor(
startOffset, endOffset,
context.irBuiltIns.unitType,
enumConstructorCall.symbol,
enumConstructorCall.symbol.owner.typeParameters.size,
enumConstructorCall.symbol.owner.valueParameters.size)
enumConstructorCall.symbol
)
assert(result.symbol.owner.valueParameters.size == 2) {
"Enum(String, Int) constructor call expected:\n${result.dump()}"
}
@@ -216,10 +214,8 @@ internal class EnumConstructorsLowering(val context: Context) : ClassLoweringPas
val result = IrDelegatingConstructorCallImpl.fromSymbolDescriptor(
startOffset, endOffset,
context.irBuiltIns.unitType,
loweredDelegatingConstructor.symbol,
loweredDelegatingConstructor.symbol.owner.typeParameters.size,
loweredDelegatingConstructor.symbol.owner.valueParameters.size)
loweredDelegatingConstructor.symbol
)
val firstParameter = enumClassConstructor.valueParameters[0]
result.putValueArgument(0,
IrGetValueImpl(startOffset, endOffset, firstParameter.type, firstParameter.symbol))
@@ -500,11 +500,8 @@ private class InteropLoweringPart1(val context: Context) : BaseInteropIrTransfor
startOffset,
endOffset,
context.irBuiltIns.unitType,
superConstructor,
0,
superConstructor.owner.valueParameters.size
superConstructor
)
+irCall(symbols.interopObjCObjectSuperInitCheck).apply {
extensionReceiver = irGet(constructedClass.thisReceiver!!)
putValueArgument(0, initCall)