[IR] Add returnType to consturcotrs of IrFunctionBase
This commit is contained in:
@@ -122,12 +122,11 @@ fun IrClass.addSimpleDelegatingConstructor(
|
||||
)
|
||||
constructorDescriptor.returnType = superConstructorDescriptor.returnType
|
||||
|
||||
return IrConstructorImpl(startOffset, endOffset, origin, constructorDescriptor).also { constructor ->
|
||||
return IrConstructorImpl(startOffset, endOffset, origin, constructorDescriptor, this.defaultType).also { constructor ->
|
||||
|
||||
assert(superConstructor.dispatchReceiverParameter == null) // Inner classes aren't supported.
|
||||
|
||||
constructor.valueParameters += valueParameters
|
||||
constructor.returnType = this.defaultType
|
||||
|
||||
constructor.body = IrBlockBodyImpl(
|
||||
startOffset, endOffset,
|
||||
|
||||
+2
@@ -429,6 +429,7 @@ private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarati
|
||||
IrConstructorSymbolImpl(descriptor),
|
||||
irFunction.name,
|
||||
irFunction.visibility,
|
||||
irFunction.returnType,
|
||||
irFunction.isInline,
|
||||
false,
|
||||
false
|
||||
@@ -449,6 +450,7 @@ private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarati
|
||||
name,
|
||||
irFunction.visibility,
|
||||
Modality.FINAL,
|
||||
irFunction.returnType,
|
||||
irFunction.isInline,
|
||||
false,
|
||||
false,
|
||||
|
||||
+1
-1
@@ -137,10 +137,10 @@ class InitializersLowering(
|
||||
IrFunctionImpl(
|
||||
irClass.startOffset, irClass.endOffset, declarationOrigin,
|
||||
staticInitializerDescriptor,
|
||||
context.irBuiltIns.unitType,
|
||||
IrBlockBodyImpl(irClass.startOffset, irClass.endOffset,
|
||||
staticInitializerStatements.map { it.copy(irClass) })
|
||||
).apply {
|
||||
returnType = context.irBuiltIns.unitType
|
||||
accept(SetDeclarationsParentVisitor, this)
|
||||
}
|
||||
)
|
||||
|
||||
+8
-6
@@ -227,6 +227,12 @@ class InlineClassLowering(val context: BackendContext) {
|
||||
|
||||
private fun createStaticBodilessMethod(function: IrFunction): IrSimpleFunction {
|
||||
val descriptor = WrappedSimpleFunctionDescriptor()
|
||||
val returnType = when (function) {
|
||||
is IrSimpleFunction -> function.returnType
|
||||
is IrConstructor -> function.parentAsClass.defaultType
|
||||
else -> error("Unknown function type")
|
||||
}
|
||||
|
||||
return IrFunctionImpl(
|
||||
function.startOffset,
|
||||
function.endOffset,
|
||||
@@ -235,18 +241,14 @@ class InlineClassLowering(val context: BackendContext) {
|
||||
function.name.toInlineClassImplementationName(),
|
||||
function.visibility,
|
||||
Modality.FINAL,
|
||||
returnType,
|
||||
function.isInline,
|
||||
function.isExternal,
|
||||
(function is IrSimpleFunction && function.isTailrec),
|
||||
(function is IrSimpleFunction && function.isSuspend)
|
||||
).apply {
|
||||
descriptor.bind(this)
|
||||
returnType = when (function) {
|
||||
is IrSimpleFunction -> function.returnType
|
||||
is IrConstructor -> function.parentAsClass.defaultType
|
||||
else -> error("Unknown function type")
|
||||
}
|
||||
typeParameters += function.typeParameters
|
||||
copyTypeParametersFrom(function)
|
||||
annotations += function.annotations
|
||||
dispatchReceiverParameter = null
|
||||
extensionReceiverParameter = function.extensionReceiverParameter?.copyTo(this)
|
||||
|
||||
+2
-3
@@ -536,6 +536,7 @@ open class LocalDeclarationsLowering(
|
||||
// TODO: change to PRIVATE when issue with CallableReferenceLowering in Jvm BE is fixed
|
||||
if (isJVM) Visibilities.PUBLIC else Visibilities.PRIVATE,
|
||||
Modality.FINAL,
|
||||
oldDeclaration.returnType,
|
||||
oldDeclaration.isInline,
|
||||
oldDeclaration.isExternal,
|
||||
oldDeclaration.isTailrec,
|
||||
@@ -546,7 +547,6 @@ open class LocalDeclarationsLowering(
|
||||
localFunctionContext.transformedDeclaration = newDeclaration
|
||||
|
||||
newDeclaration.parent = memberOwner
|
||||
newDeclaration.returnType = oldDeclaration.returnType
|
||||
newDeclaration.copyTypeParametersFrom(oldDeclaration)
|
||||
newDeclaration.dispatchReceiverParameter = newDispatchReceiverParameter
|
||||
newDeclaration.extensionReceiverParameter = oldDeclaration.extensionReceiverParameter?.run {
|
||||
@@ -615,7 +615,7 @@ open class LocalDeclarationsLowering(
|
||||
|
||||
val newDeclaration = IrConstructorImpl(
|
||||
oldDeclaration.startOffset, oldDeclaration.endOffset, oldDeclaration.origin,
|
||||
newSymbol, oldDeclaration.name, loweredConstructorVisibility, oldDeclaration.isInline,
|
||||
newSymbol, oldDeclaration.name, loweredConstructorVisibility, oldDeclaration.returnType, oldDeclaration.isInline,
|
||||
oldDeclaration.isExternal, oldDeclaration.isPrimary
|
||||
)
|
||||
|
||||
@@ -624,7 +624,6 @@ open class LocalDeclarationsLowering(
|
||||
constructorContext.transformedDeclaration = newDeclaration
|
||||
|
||||
newDeclaration.parent = localClassContext.declaration
|
||||
newDeclaration.returnType = oldDeclaration.returnType
|
||||
newDeclaration.copyTypeParametersFrom(oldDeclaration)
|
||||
|
||||
// TODO: should dispatch receiver be copied?
|
||||
|
||||
Reference in New Issue
Block a user