33f9576dd1
The main consequence of it is that TYPE_MISMATCH range for control structures became wider. Also, for extra safety, don't change behaviour of OI.
25 lines
669 B
Kotlin
Vendored
25 lines
669 B
Kotlin
Vendored
// !WITH_NEW_INFERENCE
|
|
import kotlin.reflect.KProperty
|
|
|
|
class Delegate {
|
|
operator fun getValue(thisRef: Any?, prop: KProperty<*>): String? {
|
|
return null
|
|
}
|
|
}
|
|
|
|
class Example {
|
|
private val p: String? by Delegate()
|
|
|
|
public val r: String? = "xyz"
|
|
|
|
public fun foo(): String {
|
|
// Smart cast is not possible if property is delegated
|
|
return <!NI;TYPE_MISMATCH!>if (p != null) <!NI;SMARTCAST_IMPOSSIBLE, SMARTCAST_IMPOSSIBLE!>p<!> else ""<!>
|
|
}
|
|
|
|
public fun bar(): String {
|
|
// But is possible for non-delegated value property even if it's public
|
|
return if (r != null) <!DEBUG_INFO_SMARTCAST!>r<!> else ""
|
|
}
|
|
}
|