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:
+1
-1
@@ -46,7 +46,7 @@ fun testNoSmartCast3(s: String?) {
|
||||
fun testNoSmartCast4(s: String?) {
|
||||
id(
|
||||
if (s != null) ( {""} )
|
||||
else <!IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION!>noSmartCast4<!>(null) <!TYPE_MISMATCH!>{ <!TYPE_MISMATCH!>""<!> }<!>
|
||||
else noSmartCast4(null) { "" }
|
||||
)
|
||||
s<!UNSAFE_CALL!>.<!>length
|
||||
}
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||
// ISSUE: KT-36819
|
||||
|
||||
fun <K> select(vararg x: K) = x[0]
|
||||
interface A
|
||||
class B: A
|
||||
class C: A
|
||||
fun <T> id1(x: T): T = x
|
||||
fun <R> id2(x: R): R = x
|
||||
|
||||
class Out<out R>(x: R)
|
||||
|
||||
fun main() {
|
||||
val x1 = select(id1 { B() }, id2 { C() })
|
||||
val x2 = select({ B() }, { C() }) // OK, CST = () -> A
|
||||
val x3 = select(id1(Out(B())), id2(Out(C()))) // OK, CST = Out<A>
|
||||
}
|
||||
+12
-5
@@ -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 -> }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ R> fold(/*0*/ initial: R, /*1*/ operation: (R) -> kotlin.Unit): kotlin.Unit
|
||||
public fun foo(): kotlin.Unit
|
||||
public fun </*0*/ T> id1(/*0*/ x: T): T
|
||||
public fun </*0*/ R> id2(/*0*/ x: R): R
|
||||
public fun main(): kotlin.Unit
|
||||
|
||||
Reference in New Issue
Block a user