Fix codegen for context-receiver contained super class constructor calls

^KT-51889 In Progress
This commit is contained in:
Denis.Zharkov
2022-04-29 18:15:07 +03:00
committed by teamcity
parent e39fb807a7
commit 81416d1c46
4 changed files with 37 additions and 7 deletions
@@ -34,10 +34,7 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtConstructorDelegationCall
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.ValueArgument
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments
import org.jetbrains.kotlin.psi2ir.intermediate.*
@@ -264,10 +261,12 @@ fun StatementGenerator.generateCallReceiver(
else -> {
dispatchReceiverValue = generateReceiverOrNull(ktDefaultElement, dispatchReceiver)
extensionReceiverValue = generateReceiverOrNull(ktDefaultElement, extensionReceiver)
contextReceiverValues = if (ktDefaultElement is KtConstructorDelegationCall) contextReceivers.mapNotNull {
generateContextReceiverForDelegatingConstructorCall(ktDefaultElement, it as ContextClassReceiver)
contextReceiverValues = when (ktDefaultElement) {
is KtConstructorDelegationCall, is KtSuperTypeCallEntry -> contextReceivers.mapNotNull {
generateContextReceiverForDelegatingConstructorCall(ktDefaultElement, it as ContextClassReceiver)
}
else -> contextReceivers.mapNotNull { generateReceiverOrNull(ktDefaultElement, it) }
}
else contextReceivers.mapNotNull { generateReceiverOrNull(ktDefaultElement, it) }
}
}