NI: improve lambdas completion – look at all postponed arguments during resolution lambdas by additional conditions

^KT-36819 Fixed
^KT-36069 Fixed
This commit is contained in:
Victor Petukhov
2020-03-31 13:06:44 +03:00
parent 3baeb63455
commit f8d72f5dd9
5 changed files with 61 additions and 78 deletions
+12 -5
View File
@@ -1,5 +1,6 @@
// FIR_IDENTICAL
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_ANONYMOUS_PARAMETER
// ISSUE: KT-36819
fun <K> select(vararg x: K) = x[0]
@@ -12,7 +13,13 @@ fun <R> id2(x: R): R = x
class Out<out R>(x: R)
fun main() {
val x1 = select(id1 { B() }, id2 { <!TYPE_MISMATCH, TYPE_MISMATCH!>C()<!> })
val x2 = select({ B() }, { C() }) // OK, CST = () -> A
val x3 = select(id1(Out(B())), id2(Out(C()))) // OK, CST = Out<A>
}
val x1 = select(id1 { B() }, id2 { C() })
val x2 = select({ B() }, { C() })
val x3 = select(id1(Out(B())), id2(Out(C())))
}
fun <R> fold(initial: R, operation: (R) -> Unit) {}
fun foo() {
fold({ x: Int -> x }) { acc -> }
}