Files
kotlin-fork/compiler/testData/diagnostics/testsWithStdLib/lateinit/isInitialized.fir.kt
T

88 lines
1.6 KiB
Kotlin
Vendored

// !DIAGNOSTICS: -UNUSED_VARIABLE -NOTHING_TO_INLINE
// FILE: test.kt
interface Base {
var x: String
}
open class Foo : Base {
override lateinit var x: String
private lateinit var y: String
var nonLateInit: Int = 1
fun ok() {
val b: Boolean = this::x.isInitialized
val otherInstance = Foo()
otherInstance::x.isInitialized
(this::x).isInitialized
(@Suppress("ALL") (this::x)).isInitialized
object {
fun local() {
class Local {
val xx = this@Foo::x.isInitialized
val yy = this@Foo::y.isInitialized
}
}
}
}
fun onLiteral() {
val p = this::x
p.isInitialized
}
fun onNonLateinit() {
this::nonLateInit.isInitialized
}
inline fun inlineFun() {
this::x.isInitialized
object {
val z = this@Foo::x.isInitialized
}
}
inner class InnerSubclass : Foo() {
fun innerOk() {
// This is access to Foo.x declared lexically above
this@Foo::x.isInitialized
// This is access to InnerSubclass.x which is inherited from Foo.x
this::x.isInitialized
}
}
}
fun onNonAccessible() {
Foo()::x.isInitialized
}
fun onNonLateinit() {
Foo()::nonLateInit.isInitialized
}
object Unrelated {
fun onNonAccessible() {
Foo()::x.isInitialized
}
}
class FooImpl : Foo() {
fun onNonAccessible() {
this::x.isInitialized
}
}
// FILE: other.kt
class OtherFooImpl : Foo() {
fun onNonAccessible() {
this::x.isInitialized
}
}