Introduce FirInitializerTypeMismatchChecker

This commit is contained in:
vldf
2021-03-01 19:29:59 +03:00
committed by Mikhail Glukhikh
parent 7ed35e5c2b
commit 24f1f1221e
114 changed files with 647 additions and 285 deletions
@@ -4,13 +4,13 @@ fun test(bal: Array<Int>) {
val a: () -> Unit = { bar += 4 }
val b: () -> Int = { bar = 4 }
val b: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>{ bar = 4 }<!>
val c: () -> <!UNRESOLVED_REFERENCE!>UNRESOLVED<!> = { bal[2] = 3 }
val d: () -> Int = { bar += 4 }
val d: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>{ bar += 4 }<!>
val e: Unit = run { bar += 4 }
val f: Int = run { bar += 4 }
val f: Int = <!INITIALIZER_TYPE_MISMATCH!>run { bar += 4 }<!>
}
@@ -7,33 +7,33 @@ fun <T>id(x: T) = x
// Before the fix, there wasn't any type mismatch error in NI due to result type not being a subtype of expected type
fun main() {
val x: () -> Int = { "" }
val x: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>{ "" }<!>
val a0: () -> Int = fun(): String = "1"
val a1: () -> Int = (fun() = "1")
val a0: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>fun(): String = "1"<!>
val a1: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>(fun() = "1")<!>
val a2: () -> Unit = (fun() = "1")
val a3: Unit = (fun() = "1")
val a3: Unit = <!INITIALIZER_TYPE_MISMATCH!>(fun() = "1")<!>
val a4 = (fun() = "1")
val a5 = (fun(): String = "1")
val a6: () -> Int = (fun() = 1)
val a7: () -> Int = (fun(): String = "1") as () -> Int
val a8: () -> Int = fun(): String = "1"
val a8: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>fun(): String = "1"<!>
val a9: () -> () -> () -> Int = fun(): () -> () -> String = fun(): () -> String = fun(): String = "1"
foo(fun(): String = <!ARGUMENT_TYPE_MISMATCH!>"1"<!>)
foo(((fun(): String = <!ARGUMENT_TYPE_MISMATCH!>"1"<!>)))
val a10: Int.(String) -> Int = fun (x: String) = 10
val a10: Int.(String) -> Int = <!INITIALIZER_TYPE_MISMATCH!>fun (x: String) = 10<!>
val a11: () -> () -> () -> Int = fun() = fun() = fun(): String = "1"
val a12: Int = fun(): String = "1"
val a13: Int = fun() = fun(): String = "1"
val a14: Int = fun() = fun() = "1"
val a15: Int = fun() = fun() = {}
val a16: Int = fun() = fun() {}
val a12: Int = <!INITIALIZER_TYPE_MISMATCH!>fun(): String = "1"<!>
val a13: Int = <!INITIALIZER_TYPE_MISMATCH!>fun() = fun(): String = "1"<!>
val a14: Int = <!INITIALIZER_TYPE_MISMATCH!>fun() = fun() = "1"<!>
val a15: Int = <!INITIALIZER_TYPE_MISMATCH!>fun() = fun() = {}<!>
val a16: Int = <!INITIALIZER_TYPE_MISMATCH!>fun() = fun() {}<!>
val a17: () -> Unit = fun() {}
val a18: () -> Int = fun() {}
val a18: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>fun() {}<!>
val a19: () -> () -> Int = fun() = fun() {}
val a20: () -> () -> () -> Unit = fun() = fun() = {}
val a21: () -> () -> () -> Int = fun() = fun() = {}
@@ -1,8 +1,8 @@
val flag = true
val a: () -> Int = l@ {
val a: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>l@ {
if (flag) return@l 4
}
}<!>
val b: () -> Unit = l@ {
if (flag) return@l 4
@@ -17,6 +17,6 @@ val d: () -> Int = l@ {
5
}
val e: () -> Int = l@ {
val e: () -> Int = <!INITIALIZER_TYPE_MISMATCH!>l@ {
if (flag) 4
}
}<!>