[FIR] Replace type variable types with error types in lambda completion

#KT-54568 Fixed
#KT-59882
This commit is contained in:
Kirill Rakhman
2023-08-07 16:30:01 +02:00
committed by Space Team
parent 48433bf9fd
commit 80200fc3c5
16 changed files with 46 additions and 50 deletions
@@ -1,4 +1,3 @@
// IGNORE_LEAKED_INTERNAL_TYPES: KT-54568
// !DIAGNOSTICS: -UNUSED_ANONYMOUS_PARAMETER -UNUSED_VARIABLE
fun <T> select(vararg x: <!CANNOT_INFER_PARAMETER_TYPE, CANNOT_INFER_PARAMETER_TYPE!>T<!>) = x[0]
@@ -6,12 +5,12 @@ fun <K> id(x: K) = x
fun main() {
val x1 = select<Any?>(id { x, y -> }, { x: Int, y -> })
val x2 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>select<!>(id { x, y -> }, { x: Int, y -> })
val x2 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>select<!>(id { x, <!CANNOT_INFER_PARAMETER_TYPE!>y<!> -> }, { x: Int, <!CANNOT_INFER_PARAMETER_TYPE!>y<!> -> })
val x3 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>select<!>(id(fun (x, y) {}), fun (x: Int, y) {})
val x3 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>select<!>(id(fun (x, <!CANNOT_INFER_PARAMETER_TYPE!>y<!>) {}), fun (x: Int, <!CANNOT_INFER_PARAMETER_TYPE!>y<!>) {})
val x4 = select<Any?>((fun (x, y) {}), fun (x: Int, y) {})
val x5 = select<Any?>(id(fun (x, y) {}), fun (x: Int, y) {})
val x5 = select<Any?>(id(fun (<!CANNOT_INFER_PARAMETER_TYPE!>x<!>, <!CANNOT_INFER_PARAMETER_TYPE!>y<!>) {}), fun (x: Int, y) {})
val x6 = id<Any?>(fun (x) {})
select<Any?>(fun (x) {}, fun (x) {})
@@ -1,4 +1,3 @@
// IGNORE_LEAKED_INTERNAL_TYPES: KT-54568
// !DIAGNOSTICS: -UNUSED_ANONYMOUS_PARAMETER -UNUSED_VARIABLE
fun <T> select(vararg x: T) = x[0]
@@ -1,4 +1,3 @@
// IGNORE_LEAKED_INTERNAL_TYPES: KT-54568
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun callAny(arg: Any?) {}
@@ -20,14 +19,14 @@ fun testAnyCall() {
}
fun testParam() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>callParam<!> {
param -> param
callParam {
<!CANNOT_INFER_PARAMETER_TYPE!>param<!> -> param
}
}
fun testParamCall() {
callParam {
param -> <!UNRESOLVED_REFERENCE!>param<!>()
<!CANNOT_INFER_PARAMETER_TYPE!>param<!> -> <!UNRESOLVED_REFERENCE!>param<!>()
}
}
@@ -1,4 +1,3 @@
// IGNORE_LEAKED_INTERNAL_TYPES: KT-54568
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun callAny(arg: Any?) {}
@@ -1,4 +1,3 @@
// IGNORE_LEAKED_INTERNAL_TYPES: KT-54568
// !LANGUAGE: +PartiallySpecifiedTypeArguments
// !DIAGNOSTICS: -UNCHECKED_CAST
// WITH_STDLIB
@@ -1,4 +1,3 @@
// IGNORE_LEAKED_INTERNAL_TYPES: KT-54568
// !LANGUAGE: +PartiallySpecifiedTypeArguments
// !DIAGNOSTICS: -UNCHECKED_CAST
// WITH_STDLIB