Files
kotlin-fork/compiler/testData/diagnostics/tests/controlFlowAnalysis/unresolvedReference.kt
T
2017-12-07 12:49:56 +03:00

50 lines
1.3 KiB
Kotlin
Vendored

// !WITH_NEW_INFERENCE
// See KT-6665: unresolved reference (v.bar) should not produce "unreachable code" after it
fun foo(): Int {
val v = 1
val <!UNUSED_VARIABLE!>c<!> = v.<!UNRESOLVED_REFERENCE!>bar<!> ?: return 0
return 42
}
fun foo2(): Int {
val v = 1
val c = if (true) v.<!UNRESOLVED_REFERENCE!>bar<!> else return 3
val <!UNUSED_VARIABLE!>b<!> = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>c<!>
return 42
}
fun foo3(): Int {
val v = 1
val c = when {
true -> v.<!UNRESOLVED_REFERENCE!>bar<!>
else -> return 3
}
val <!UNUSED_VARIABLE!>b<!> = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>c<!>
return 42
}
// Type + ErrorType should give Type, unless Type is Nothing
fun bar(): Int {
val v = 1
val c = v.<!UNRESOLVED_REFERENCE!>bar<!> ?: 42
return <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>c<!>
}
fun bar2(): Int {
val v = 1
val c = if (true) v.<!UNRESOLVED_REFERENCE!>bar<!> else 3
val b = <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>c<!>
return <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!>
}
fun bar3(): Int {
val v = 1
val c = when {
true -> v.<!UNRESOLVED_REFERENCE!>bar<!>
else -> 3
}
val b = <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>c<!>
return <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!>
}