[FIR, IR] Fix name mangling for functions with context receivers
- Mangled names of property accessors now include context receiver types of the corresponding property when computed from FIR. - Context receivers are now supported when computing mangled names from IR - IrBasedDescriptors now account for context receivers ^KT-57435 Fixed
This commit is contained in:
committed by
Space Team
parent
5700212119
commit
1a29b9efff
+1
-5
@@ -78,7 +78,7 @@ open class DescriptorMangleComputer(builder: StringBuilder, mode: MangleMode) :
|
||||
|
||||
contextReceiverParameters.forEach {
|
||||
builder.appendSignature(MangleConstant.CONTEXT_RECEIVER_PREFIX)
|
||||
mangleContextReceiverParameter(builder, it)
|
||||
mangleType(builder, it.type, null)
|
||||
}
|
||||
|
||||
extensionReceiverParameter?.let {
|
||||
@@ -105,10 +105,6 @@ open class DescriptorMangleComputer(builder: StringBuilder, mode: MangleMode) :
|
||||
}
|
||||
}
|
||||
|
||||
private fun mangleContextReceiverParameter(vpBuilder: StringBuilder, param: ReceiverParameterDescriptor) {
|
||||
mangleType(vpBuilder, param.type, null)
|
||||
}
|
||||
|
||||
private fun mangleExtensionReceiverParameter(vpBuilder: StringBuilder, param: ReceiverParameterDescriptor) {
|
||||
mangleType(vpBuilder, param.type, null)
|
||||
}
|
||||
|
||||
+8
-1
@@ -87,6 +87,13 @@ open class IrMangleComputer(
|
||||
builder.appendSignature(it)
|
||||
}
|
||||
|
||||
valueParameters.take(contextReceiverParametersCount).forEach {
|
||||
if (!it.isHidden) {
|
||||
builder.appendSignature(MangleConstant.CONTEXT_RECEIVER_PREFIX)
|
||||
mangleType(builder, it.type, null)
|
||||
}
|
||||
}
|
||||
|
||||
extensionReceiverParameter?.let {
|
||||
if (!it.isHidden) {
|
||||
builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX)
|
||||
@@ -94,7 +101,7 @@ open class IrMangleComputer(
|
||||
}
|
||||
}
|
||||
|
||||
valueParameters.collectForMangler(builder, MangleConstant.VALUE_PARAMETERS) {
|
||||
valueParameters.drop(contextReceiverParametersCount).collectForMangler(builder, MangleConstant.VALUE_PARAMETERS) {
|
||||
if (!it.isHidden) {
|
||||
appendSignature(specialValueParamPrefix(it))
|
||||
mangleValueParameter(this, it, null)
|
||||
|
||||
Reference in New Issue
Block a user