Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolve/objectInnerClass.kt
T
2020-12-16 19:52:30 +03:00

150 lines
2.7 KiB
Kotlin
Vendored

// !CHECK_TYPE
/*
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-37120
*/
val case1 = object : A {
inner class Child(property: B) : Base(property) {
fun Base.zoo() {
val x = property
}
fun foo() {
baseFun()
val x = property
zoo()
hoo()
}
}
fun Child.voo() {
val x = property
}
fun Base.hoo() {
val x = property
}
open inner class Base(/*protected*/ val property: B) {
fun baseFun() {}
}
fun caseForBase() {
val base = Base(B())
/*member of Base*/
base.baseFun()
base.property
/*extensions*/
base.hoo()
}
fun caseForChild() {
val child = Child(B())
/*member of Base*/
child.baseFun()
child.property
/*member of Child*/
child.foo()
/*extensions*/
child.hoo()
child.voo()
}
}
class Case2() {
val x = object : Base(B()) {
fun Base.zoo() {
val x = property
}
fun foo() {
baseFun()
val x = property
zoo()
hoo()
}
}
fun Base.hoo() {
val x = property
}
open inner class Base(/*protected*/ val property: B) {
fun baseFun() {}
}
fun caseForBase() {
val base = Base(B())
/*member of Base*/
base.baseFun()
base.property
/*extensions*/
base.hoo()
}
fun caseForChild() {
val child = x
/*member of Base*/
child.baseFun()
child.property
/*extensions*/
child.hoo()
}
}
class Case3() {
val x = object : A {
inner class Child(property: B) : Base(property) {
fun Base.zoo() {
val x = property
}
fun foo() {
baseFun()
val x = property
zoo()
hoo()
}
}
fun Child.voo() {
val x = property
}
fun Base.hoo() {
val x = property
}
open inner class Base(/*protected*/ val property: B) {
fun baseFun() {}
}
fun caseForBase() {
val base = Base(B())
/*member of Base*/
base.baseFun()
base.property
/*extensions*/
base.hoo()
}
fun caseForChild() {
val child = Child(B())
/*member of Base*/
child.baseFun()
child.property
/*member of Child*/
child.foo()
/*extensions*/
child.hoo()
child.voo()
}
}
}
interface A {}
class B() {}