Reuse built functional types for postponed arguments by expected types and paths from a top level type variable
^KT-42221 Fixed
This commit is contained in:
+40
@@ -0,0 +1,40 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// !DIAGNOSTICS: -UNUSED_ANONYMOUS_PARAMETER
|
||||
|
||||
fun <T> id(x: T) = x
|
||||
|
||||
class A {
|
||||
val x: Map<String, (String, String, String, String) -> Unit> =
|
||||
mapOf(
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> },
|
||||
"" to id { a, b, c, d -> }
|
||||
)
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// !DIAGNOSTICS: -UNUSED_ANONYMOUS_PARAMETER
|
||||
|
||||
class A {
|
||||
val x: Map<String, (String, String, String, String) -> Unit> =
|
||||
mapOf(
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> },
|
||||
"" to { a, b, c, d -> }
|
||||
)
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER -CAST_NEVER_SUCCEEDS
|
||||
|
||||
interface Foo<out K, out V> {}
|
||||
|
||||
fun <K, V> fooOf(vararg pairs: Pair<K, V>) = null as Foo<K, V>
|
||||
|
||||
fun <A, B> to(th: A, that: B): Pair<A, B> = Pair(th, that)
|
||||
|
||||
class A {
|
||||
val x: Foo<(Int, String, String, String) -> Unit, (String, String, String, String) -> Unit> =
|
||||
fooOf(
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
to({ a, b, c, d -> }, { a, b, c, d -> }),
|
||||
)
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER -CAST_NEVER_SUCCEEDS
|
||||
|
||||
fun <T> id(x: T) = x
|
||||
|
||||
interface Foo<out K, out V> {}
|
||||
|
||||
fun <K, V> fooOf(vararg pairs: Pair<K, V>) = null as Foo<K, V>
|
||||
|
||||
fun <A, B> to(th: A, that: B): Pair<A, B> = Pair(th, that)
|
||||
|
||||
class Inv<K>(x: K)
|
||||
|
||||
class A {
|
||||
val x: Foo<Inv<(Int) -> Unit>, Inv<(String, String, String, String) -> Unit>> =
|
||||
fooOf(
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
to(Inv { a -> }, Inv { a, b, c, d -> }),
|
||||
)
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// !DIAGNOSTICS: -UNUSED_ANONYMOUS_PARAMETER -UNUSED_PARAMETER -CAST_NEVER_SUCCEEDS
|
||||
|
||||
fun <T> id(x: T) = x
|
||||
|
||||
interface Foo<out K, out V> {}
|
||||
|
||||
fun <K, V> fooOf(vararg pairs: Pair<K, V>) = null as Foo<K, V>
|
||||
|
||||
fun <A, B> to(th: A, that: B): Pair<A, B> = Pair(th, that)
|
||||
|
||||
class Inv<K>(x: K)
|
||||
|
||||
fun <A: (Int, Int, Int, Int) -> Unit> take(x: A, y: A) = null as (Int, String, String, String) -> Unit
|
||||
|
||||
class A {
|
||||
val x: Foo<Inv<(Int, String, String, String) -> Unit>, Inv<(Int, String, String, String) -> Unit>> =
|
||||
fooOf(
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv(take({ a, b, c, d -> }, { a, b, c, d -> }))),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv(take({ a, b, c, d -> }, { a, b, c, d -> }))),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv(take({ a, b, c, d -> }, { a, b, c, d -> }))),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv(take({ a, b, c, d -> }, { a, b, c, d -> }))),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv(take({ a, b, c, d -> }, { a, b, c, d -> }))),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
to(Inv(take({ a, b, c, d -> }, { a, b, c, d -> })), Inv { a, b, c, d -> }),
|
||||
)
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER -CAST_NEVER_SUCCEEDS
|
||||
|
||||
fun <T> id(x: T) = x
|
||||
|
||||
interface Foo<out K, out V> {}
|
||||
|
||||
fun <K, V> fooOf(vararg pairs: Pair<K, V>) = null as Foo<K, V>
|
||||
|
||||
fun <A, B> to(th: A, that: B): Pair<A, B> = Pair(th, that)
|
||||
|
||||
class A {
|
||||
val x: Foo<(Int, String, String, String) -> Unit, (String, String, String, String) -> Unit> =
|
||||
fooOf(
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
to(id { a, b, c, d -> }, id { a, b, c, d -> }),
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user