bcc8802014
Expression will be checked against expected type later. Theoretically, this is not very good, but it aligns with the old inference, plus it helps avoiding multiple type mismatch diagnostics.
42 lines
685 B
Kotlin
Vendored
42 lines
685 B
Kotlin
Vendored
// !LANGUAGE: +NewInference
|
|
|
|
class Obj
|
|
|
|
fun foo(): String? {
|
|
run {
|
|
if (true) return@run
|
|
|
|
if (true) Obj()
|
|
}
|
|
|
|
run {
|
|
if (true) return@run
|
|
|
|
if (true) return <!TYPE_MISMATCH!>Obj()<!> // correct error, type check against return type of function "foo"
|
|
}
|
|
|
|
run {
|
|
if (true)
|
|
return@run
|
|
else
|
|
if (true) <!UNUSED_EXPRESSION!>42<!>
|
|
}
|
|
|
|
run {
|
|
if (true)
|
|
42
|
|
else
|
|
<!INVALID_IF_AS_EXPRESSION!>if<!> (true) 42
|
|
}
|
|
|
|
run {
|
|
if (true) return@run
|
|
|
|
if (true) {
|
|
Obj()
|
|
} else
|
|
if (true) return null
|
|
}
|
|
|
|
return ""
|
|
} |