From 44807b7bd4186efa4145379d6af37f71cfad42fd Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Wed, 8 Mar 2023 18:04:57 +0100 Subject: [PATCH] [K2, MPP] Support actualization of actual function with dynamic arguments ^KT-57210 Fixed --- .../common/actualizer/IrActualizerUtils.kt | 6 ++++ .../tests/multiplatform/implDynamic.fir.kt | 28 ------------------- .../tests/multiplatform/implDynamic.kt | 1 + 3 files changed, 7 insertions(+), 28 deletions(-) delete mode 100644 compiler/testData/diagnostics/tests/multiplatform/implDynamic.fir.kt diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt index f0c40b3c72a..fb9b441aac9 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt @@ -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 } diff --git a/compiler/testData/diagnostics/tests/multiplatform/implDynamic.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/implDynamic.fir.kt deleted file mode 100644 index 7d4289cd403..00000000000 --- a/compiler/testData/diagnostics/tests/multiplatform/implDynamic.fir.kt +++ /dev/null @@ -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?): MutableMap - - fun > 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 = null!! - - actual fun > f3(t: T): dynamic = null!! -} diff --git a/compiler/testData/diagnostics/tests/multiplatform/implDynamic.kt b/compiler/testData/diagnostics/tests/multiplatform/implDynamic.kt index 7d4289cd403..7ecc503897e 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/implDynamic.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/implDynamic.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNSUPPORTED // MODULE: m1-common // FILE: common.kt