Files
kotlin-fork/compiler/testData/diagnostics/tests/nullabilityAndSmartCasts/kt362.kt
T
Mikhail Glukhikh 9c1551bca9 Implementation of smart casts for public / protected immutable properties that are not open and used in the same module.
DataFlowValueFactory and its environment refactoring: containing declaration is added into factory functions
as an argument and used to determine identifier stability. A few minor fixes. #KT-5907 Fixed. #KT-4450 Fixed. #KT-4409 Fixed.

New tests for KT-4409, KT-4450, KT-5907 (public and protected value properties used from the same module or not,
open properties, variable properties, delegated properties, properties with non-default getter).
Public val test and KT-362 test changed accordingly.
2015-03-31 16:19:03 +03:00

30 lines
946 B
Kotlin
Vendored

// FILE: this.kt
// KT-362 Don't allow.smartcasts on vals that are not internal
package example
fun test() {
val p = test.Public()
if (p.public is Int) <!DEBUG_INFO_SMARTCAST!>p.public<!> + 1
if (p.<!INVISIBLE_MEMBER!>protected<!> is Int) <!DEBUG_INFO_SMARTCAST!>p.<!INVISIBLE_MEMBER!>protected<!><!> + 1
if (p.internal is Int) <!DEBUG_INFO_SMARTCAST!>p.internal<!> + 1
val i = test.Internal()
if (i.public is Int) <!DEBUG_INFO_SMARTCAST!>i.public<!> + 1
if (i.<!INVISIBLE_MEMBER!>protected<!> is Int) <!DEBUG_INFO_SMARTCAST!>i.<!INVISIBLE_MEMBER!>protected<!><!> + 1
if (i.internal is Int) <!DEBUG_INFO_SMARTCAST!>i.internal<!> + 1
}
// FILE: other.kt
package test
public class Public() {
public val public : Int? = 1;
protected val protected : Int? = 1;
val internal : Int? = 1
}
internal class Internal() {
public val public : Int? = 1;
protected val protected : Int? = 1;
val internal : Int? = 1
}