Accurate representation of smart casts on complex expressions

This commit is contained in:
Mikhail Glukhikh
2015-12-08 17:30:01 +03:00
parent 7cd867b936
commit 745a3aeeac
11 changed files with 102 additions and 2 deletions
@@ -0,0 +1,20 @@
// Smart casts on complex expressions
fun baz(s: String?): Int {
if (s == null) return 0
return <!DEBUG_INFO_SMARTCAST!>when(<!DEBUG_INFO_SMARTCAST!>s<!>) {
"abc" -> s
else -> "xyz"
}<!>.length
}
var ss: String? = null
fun bar(): Int {
if (ss == null) return 0
// ss cannot be smart casted, so an error here
return when(ss) {
"abc" -> ss
else -> "xyz"
}<!UNSAFE_CALL!>.<!>length
}