[FIR] Fix false positive RETURN_TYPE_MISMATCH in intellij ultimate

This commit is contained in:
Ivan Kochurkin
2022-04-07 16:07:11 +03:00
parent 04da0ba55d
commit 81b1ed9ad4
9 changed files with 14 additions and 11 deletions
@@ -5,7 +5,7 @@ val a: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>l@ {
}<!>
val b: () -> Unit = l@ {
if (flag) return@l <!RETURN_TYPE_MISMATCH!>4<!>
if (flag) return@l 4
}
val c: () -> Any = l@ {
@@ -0,0 +1,6 @@
val flag = true
val a = b@ {
if (flag) return@b 4
return@b
}
@@ -1,7 +1,6 @@
// FIR_IDENTICAL
val flag = true
val a = b@ {
if (flag) return@b <!RETURN_TYPE_MISMATCH!>4<!>
return@b
}
}
@@ -1,6 +1,6 @@
fun test(a: Int) {
run<Int>f@{
if (a > 0) return@f <!ARGUMENT_TYPE_MISMATCH, RETURN_TYPE_MISMATCH!>""<!>
if (a > 0) return@f <!ARGUMENT_TYPE_MISMATCH!>""<!>
return@f 1
}
@@ -20,7 +20,7 @@ fun test(a: A<out CharSequence>, z: Out<CharSequence>) {
a.bar { <!ARGUMENT_TYPE_MISMATCH, TYPE_MISMATCH!>z.id()<!> }
a.foo {
z.foobar(if (1 > 2) return@foo <!ARGUMENT_TYPE_MISMATCH, RETURN_TYPE_MISMATCH!>""<!> else "")
z.foobar(if (1 > 2) return@foo <!ARGUMENT_TYPE_MISMATCH!>""<!> else "")
<!ARGUMENT_TYPE_MISMATCH!>""<!>
}
}
@@ -12,7 +12,7 @@ val a: () -> Unit = l@{
val b: () -> Unit = l@{
// Error, coercion can't be applied at this position!
if (true) return@l <!RETURN_TYPE_MISMATCH!>"hello"<!>
if (true) return@l "hello"
// However, this is OK, because here coercion is applied
"hello"
@@ -103,7 +103,7 @@ fun main() {
select(
id { x, y -> <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>x<!>.inv() + <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Number")!>y<!>.toByte() },
id<(Int, Number) -> Int> { x, y -> x.inv() },
<!RETURN_TYPE_MISMATCH!>{}<!> as (Number, Number) -> Int
{} as (Number, Number) -> Int
)
// Inferring lambda parameter types by a few expected types (a few upper constraints)