[FIR] KT-57665: Make dynamic members' parameters dynamic

Parameter types are not only used "to accept" some data,
but they also are used as inputs for inference
(expected types)

^KT-57665 Fixed
This commit is contained in:
Nikolay Lunyak
2023-03-31 17:16:42 +03:00
committed by Space Team
parent 18f80b1ab5
commit 3b0a923210
4 changed files with 11 additions and 25 deletions
@@ -2,15 +2,15 @@ fun test(d: dynamic) {
val a = arrayOf(1, 2, 3)
d.foo(*d)
d.foo(*<!ARGUMENT_TYPE_MISMATCH!>a<!>)
d.foo(1, "2", *<!ARGUMENT_TYPE_MISMATCH!>a<!>)
d.foo(1, *<!ARGUMENT_TYPE_MISMATCH!>a<!>) <!VARARG_OUTSIDE_PARENTHESES!>{ }<!>
d.foo(*<!ARGUMENT_TYPE_MISMATCH!>a<!>) <!VARARG_OUTSIDE_PARENTHESES!>{ "" }<!>
d.foo(*<!ARGUMENT_TYPE_MISMATCH!>a<!>, *<!ARGUMENT_TYPE_MISMATCH!>a<!>)
d.foo(*<!ARGUMENT_TYPE_MISMATCH!>a<!>, *<!ARGUMENT_TYPE_MISMATCH!>a<!>) <!VARARG_OUTSIDE_PARENTHESES!>{ "" }<!>
d.foo(*<!ARGUMENT_TYPE_MISMATCH!>a<!>, 1, { "" }, *<!ARGUMENT_TYPE_MISMATCH!>a<!>)
d.foo(*<!ARGUMENT_TYPE_MISMATCH!>a<!>, 1)
d.foo(*<!ARGUMENT_TYPE_MISMATCH!>a<!>, *<!ARGUMENT_TYPE_MISMATCH!>a<!>, { "" })
d.foo(*a)
d.foo(1, "2", *a)
d.foo(1, *a) <!VARARG_OUTSIDE_PARENTHESES!>{ }<!>
d.foo(*a) <!VARARG_OUTSIDE_PARENTHESES!>{ "" }<!>
d.foo(*a, *a)
d.foo(*a, *a) <!VARARG_OUTSIDE_PARENTHESES!>{ "" }<!>
d.foo(*a, 1, { "" }, *a)
d.foo(*a, 1)
d.foo(*a, *a, { "" })
bar(d)
bar(d, d)
@@ -1,15 +0,0 @@
// ISSUE: KT-57665
// DIAGNOSTICS: -UNUSED_PARAMETER
fun <T> T.foo(a: String, b: (T) -> Unit) {
this.asDynamic().goo(jso {
this.<!UNRESOLVED_REFERENCE!>asjhasdas<!>
})
}
fun <T : Any> jso(): T =
js("({})")
fun <T : Any> jso(
block: T.() -> Unit,
): T = jso<T>().apply(block)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ISSUE: KT-57665
// DIAGNOSTICS: -UNUSED_PARAMETER