Accurate representation of smart casts on complex expressions
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
fun baz(s: String?): Int {
|
||||
return <!DEBUG_INFO_SMARTCAST!>if (s == null) {
|
||||
""
|
||||
}
|
||||
else {
|
||||
val u: String? = null
|
||||
if (u == null) return 0
|
||||
u
|
||||
}<!>.length
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
public fun baz(/*0*/ s: kotlin.String?): kotlin.Int
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package
|
||||
|
||||
public var ss: kotlin.String?
|
||||
public fun bar(): kotlin.Int
|
||||
public fun baz(/*0*/ s: kotlin.String?): kotlin.Int
|
||||
Reference in New Issue
Block a user