[K2, MPP] Support actualization of actual function with dynamic arguments

^KT-57210 Fixed
This commit is contained in:
Ivan Kochurkin
2023-03-08 18:04:57 +01:00
committed by Space Team
parent ce7af9ff2b
commit 44807b7bd4
3 changed files with 7 additions and 28 deletions
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
import org.jetbrains.kotlin.ir.types.IrDynamicType
import org.jetbrains.kotlin.ir.types.classifierOrFail
import org.jetbrains.kotlin.ir.util.hasAnnotation
import org.jetbrains.kotlin.ir.util.kotlinFqName
@@ -61,11 +62,16 @@ private fun IrFunction.match(actualFunction: IrFunction, expectActualTypesMap: M
return false
}
if (expectParameter.type is IrDynamicType || actualParameter.type is IrDynamicType) {
return true
}
if (getActualizedValueParameterSymbol(expectParameter, localTypeParametersMap) !=
getActualizedValueParameterSymbol(actualParameter)
) {
return false
}
return true
}
@@ -1,28 +0,0 @@
// !DIAGNOSTICS: -UNSUPPORTED
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
constructor(p: Any)
fun f1(s: String): Int
fun f2(s: List<String>?): MutableMap<Boolean?, Foo>
fun <T : Set<Number>> f3(t: T): T?
}
// MODULE: m2-js()()(m1-common)
// FILE: js.kt
// TODO: do not suppress UNSUPPORTED once JS files in multi-platform tests are analyzed with JS analyzer facade
actual class Foo {
actual constructor(p: dynamic) {}
actual fun f1(s: dynamic): dynamic = null!!
actual fun f2(s: dynamic): MutableMap<Boolean?, Foo> = null!!
actual fun <T : Set<Number>> f3(t: T): dynamic = null!!
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNSUPPORTED
// MODULE: m1-common
// FILE: common.kt