[FIR] Serialize context receivers using the correct local serializer

This leads to type ref referring to generic type variables being
serialized correctly.
When the type variable is declared on the member itself, it's written to
typeParameterName,
otherwise it's written to typeParameter. This is required for
deserialization to work correctly.

#KT-63227 Fixed
This commit is contained in:
Kirill Rakhman
2023-11-07 13:47:58 +01:00
committed by Space Team
parent fe94876d9a
commit 7da271bab8
21 changed files with 139 additions and 4 deletions
@@ -0,0 +1,22 @@
// !LANGUAGE: +ContextReceivers
// MODULE: m1
// FILE: Base.kt
abstract class Base<T> {
context(T)
abstract val String.foo: Int?
context(T)
abstract fun foo(): Int?
}
// MODULE: box(m1)
// FILE: box.kt
class Child : Base<String>() {
context(String)
override val String.foo: Int? get() = 1
context(String)
override fun foo(): Int? = 1
}
fun box() = "OK"