[FE 1.0] Don't lose diagnostics during lambda analysis at the overload resolution by return type stage

^KT-49658 Fixed
This commit is contained in:
Victor Petukhov
2022-01-11 15:22:03 +03:00
committed by teamcity
parent 7820b268fb
commit 37d163d417
17 changed files with 212 additions and 21 deletions
@@ -0,0 +1,16 @@
// WITH_STDLIB
fun doTheMapThing1(elements: List<CharSequence>): List<String> {
return elements.flatMap {
<!ARGUMENT_TYPE_MISMATCH!>when (it) { // NullPointerException
is String -> listOf("Yeah")
else -> null
}<!>
}
}
fun doTheMapThing2(elements: List<CharSequence>): List<String> {
return elements.flatMap {
<!ARGUMENT_TYPE_MISMATCH!>if (it is String) listOf("Yeah") else null<!> // it's OK with `if`
}
}
@@ -0,0 +1,16 @@
// WITH_STDLIB
fun doTheMapThing1(elements: List<CharSequence>): List<String> {
return elements.flatMap {
<!TYPE_MISMATCH_WARNING!>when (it) { // NullPointerException
is String -> listOf("Yeah")
else -> null
}<!>
}
}
fun doTheMapThing2(elements: List<CharSequence>): List<String> {
return elements.flatMap {
<!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH_WARNING!>if (it is String) listOf("Yeah") else null<!> // it's OK with `if`
}
}
@@ -0,0 +1,5 @@
package
public fun doTheMapThing1(/*0*/ elements: kotlin.collections.List<kotlin.CharSequence>): kotlin.collections.List<kotlin.String>
public fun doTheMapThing2(/*0*/ elements: kotlin.collections.List<kotlin.CharSequence>): kotlin.collections.List<kotlin.String>
@@ -0,0 +1,17 @@
// !LANGUAGE: +DontLoseDiagnosticsDuringOverloadResolutionByReturnType
// WITH_STDLIB
fun doTheMapThing1(elements: List<CharSequence>): List<String> {
return elements.flatMap {
<!ARGUMENT_TYPE_MISMATCH!>when (it) { // NullPointerException
is String -> listOf("Yeah")
else -> null
}<!>
}
}
fun doTheMapThing2(elements: List<CharSequence>): List<String> {
return elements.flatMap {
<!ARGUMENT_TYPE_MISMATCH!>if (it is String) listOf("Yeah") else null<!> // it's OK with `if`
}
}
@@ -0,0 +1,17 @@
// !LANGUAGE: +DontLoseDiagnosticsDuringOverloadResolutionByReturnType
// WITH_STDLIB
fun doTheMapThing1(elements: List<CharSequence>): List<String> {
return elements.<!CANDIDATE_CHOSEN_USING_OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION!>flatMap {
<!TYPE_MISMATCH!>when (it) { // NullPointerException
is String -> listOf("Yeah")
else -> null
}<!>
}<!>
}
fun doTheMapThing2(elements: List<CharSequence>): List<String> {
return elements.<!CANDIDATE_CHOSEN_USING_OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION!>flatMap {
<!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>if (it is String) listOf("Yeah") else null<!> // it's OK with `if`
}<!>
}
@@ -0,0 +1,4 @@
package
public fun doTheMapThing1(/*0*/ elements: kotlin.collections.List<kotlin.CharSequence>): kotlin.collections.List<kotlin.String>
public fun doTheMapThing2(/*0*/ elements: kotlin.collections.List<kotlin.CharSequence>): kotlin.collections.List<kotlin.String>