62f7e8f71f
As part of this change, we also extend the usage of RealVariable in more places during DFA. Now mutable properties, property with custom getters, delegated properties, etc are also treatd as a `RealVariable`. In general this is needed in order to carry out smartcast computation in order to report `SMARTCAST_IMPOSSIBLE`. It seems to also have side effects that improves behavior of some test files.
36 lines
524 B
Kotlin
Vendored
36 lines
524 B
Kotlin
Vendored
// MODULE: m1
|
|
// FILE: a.kt
|
|
|
|
package a
|
|
|
|
public class X {
|
|
public val x : String? = null
|
|
}
|
|
|
|
// MODULE: m2(m1)
|
|
// FILE: b.kt
|
|
|
|
package b
|
|
|
|
import a.X
|
|
|
|
public fun X.gav(): Int {
|
|
if (x != null)
|
|
// Smart cast is not possible if definition is in another module
|
|
return x<!UNSAFE_CALL!>.<!>length
|
|
else
|
|
return 0
|
|
}
|
|
|
|
// FILE: c.kt
|
|
|
|
package a
|
|
|
|
public fun X.gav(): Int {
|
|
if (x != null)
|
|
// Even if it's in the same package
|
|
return x<!UNSAFE_CALL!>.<!>length
|
|
else
|
|
return 0
|
|
}
|