backend.common: fix minor bug in LocalFunctionsLowering
extension receiver parameter should be remapped too (e.g. to support lambda with receiver)
This commit is contained in:
committed by
SvyatoslavScherbina
parent
7cebc4f676
commit
a6a6c677a3
+7
-3
@@ -57,7 +57,7 @@ class LocalFunctionsLowering(val context: BackendContext): DeclarationContainerL
|
||||
|
||||
lateinit var transformedDescriptor: FunctionDescriptor
|
||||
|
||||
val old2new: MutableMap<ValueDescriptor, ValueParameterDescriptor> = HashMap()
|
||||
val old2new: MutableMap<ValueDescriptor, ValueDescriptor> = HashMap()
|
||||
|
||||
var index: Int = -1
|
||||
|
||||
@@ -67,7 +67,7 @@ class LocalFunctionsLowering(val context: BackendContext): DeclarationContainerL
|
||||
|
||||
private inner class LocalFunctionsTransformer(val memberFunction: IrFunction) {
|
||||
val localFunctions: MutableMap<FunctionDescriptor, LocalFunctionContext> = LinkedHashMap()
|
||||
val new2old: MutableMap<ValueParameterDescriptor, ValueDescriptor> = HashMap()
|
||||
val new2old: MutableMap<ValueDescriptor, ValueDescriptor> = HashMap()
|
||||
|
||||
fun lowerLocalFunctions(): List<IrDeclaration>? {
|
||||
collectLocalFunctions()
|
||||
@@ -285,10 +285,14 @@ class LocalFunctionsLowering(val context: BackendContext): DeclarationContainerL
|
||||
Visibilities.PRIVATE
|
||||
)
|
||||
|
||||
oldDescriptor.extensionReceiverParameter?.let {
|
||||
localFunctionContext.recordRemapped(it, newDescriptor.extensionReceiverParameter!!)
|
||||
}
|
||||
|
||||
return newDescriptor
|
||||
}
|
||||
|
||||
private fun LocalFunctionContext.recordRemapped(oldDescriptor: ValueDescriptor, newDescriptor: ValueParameterDescriptor): ValueParameterDescriptor {
|
||||
private fun LocalFunctionContext.recordRemapped(oldDescriptor: ValueDescriptor, newDescriptor: ValueDescriptor): ValueDescriptor {
|
||||
old2new[oldDescriptor] = newDescriptor
|
||||
new2old[newDescriptor] = oldDescriptor
|
||||
return newDescriptor
|
||||
|
||||
Reference in New Issue
Block a user