K2: take receiver parameters into account while computing JVM descriptor
#KT-72790 Fixed
diff --git a/compiler/fir/fir-jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/SignatureUtils.kt b/compiler/fir/fir-jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/SignatureUtils.kt
index 58e04e6..9795180 100644
--- a/compiler/fir/fir-jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/SignatureUtils.kt
+++ b/compiler/fir/fir-jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/SignatureUtils.kt
@@ -7,6 +7,7 @@
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
import org.jetbrains.kotlin.fir.containingClassLookupTag
+import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
@@ -45,9 +46,8 @@
}
}
- append("(")
- for (parameter in valueParameters) {
- typeConversion(parameter.returnTypeRef)?.let { coneType ->
+ fun appendTypeRef(parameter: FirDeclaration, typeRef: FirTypeRef) {
+ typeConversion(typeRef)?.let { coneType ->
try {
appendConeType(coneType, typeConversion, mutableSetOf())
} catch (e: ConcurrentModificationException) {
@@ -67,6 +67,17 @@
}
}
}
+
+ append("(")
+ for (parameter in contextParameters) {
+ appendTypeRef(parameter, parameter.returnTypeRef)
+ }
+ receiverParameter?.let {
+ appendTypeRef(it, it.typeRef)
+ }
+ for (parameter in valueParameters) {
+ appendTypeRef(parameter, parameter.returnTypeRef)
+ }
append(")")
if (includeReturnType) {