Labeled this & super to nested class' outer is an error

#KT-1174 In Progress
This commit is contained in:
Alexander Udalov
2012-12-03 17:42:40 +04:00
parent 5d92453532
commit 43c37398af
17 changed files with 84 additions and 17 deletions
@@ -1,5 +1,5 @@
class Outer() {
class Inner() {
inner class Inner() {
val outer: Outer get() = this@Outer
}
@@ -3,13 +3,13 @@ open class A {
}
open class B : A() {
class E {
inner class E {
val foo: String = super<A>@B.foo
}
}
class C : B() {
class D {
inner class D {
val foo: String = super<B>@C.foo
}
}
@@ -14,7 +14,7 @@ open class N() : M(), K {
override fun x() : Int = 20
open class C() : K {
open inner class C() : K {
fun test1() = x()
fun test2() = super<M>@N.x()
fun test3() = super<K>@N.x()
@@ -11,7 +11,7 @@ class A : K {
override fun foo() = "A.foo"
override fun bar() = "A.bar"
class B : K {
inner class B : K {
override fun foo() = "B.foo"
override fun bar() = "B.bar"
@@ -11,7 +11,7 @@ class A : K() {
override val foo = "A.foo"
override fun bar() = "A.bar"
class B : K() {
inner class B : K() {
override val foo = "B.foo"
override fun bar() = "B.bar"
@@ -29,7 +29,7 @@ class C() : B() {
fun getInt() = 0
class D() {
class B() {
inner class B() {
fun foo() {
<!VARIABLE_EXPECTED!>this@D<!> = D()
}
@@ -109,7 +109,7 @@ class TestBackingFieldsVisibility() {
val x = <!INACCESSIBLE_BACKING_FIELD!>$namespaceLevelVar<!>
class Inner() {
inner class Inner() {
val z = this@TestBackingFieldsVisibility.$x
}
@@ -169,4 +169,4 @@ class T() {
}
}
}
}
}
@@ -0,0 +1,20 @@
trait Trait {
fun bar() = 42
}
class Outer : Trait {
class Nested {
val t = this<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>@Outer<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
val s = super<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>@Outer<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
inner class NestedInner {
val t = this<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>@Outer<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
val s = super<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>@Outer<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
}
}
inner class Inner {
val t = this@Outer.bar()
val s = super@Outer.bar()
}
}
@@ -0,0 +1,23 @@
trait Trait {
fun bar() = 42
}
class Outer : Trait {
fun foo() {
val <!UNUSED_VARIABLE!>t<!> = this@Outer
val <!UNUSED_VARIABLE!>s<!> = super@Outer.bar()
class Local : Trait {
val t = this@Outer
val s = super@Outer.bar()
inner class Inner {
val t = this@Local
val s = super@Local.bar()
val tt = this@Outer
val ss = super@Outer.bar()
}
}
}
}
@@ -5,15 +5,21 @@ class Outer {
class Nested {
fun f() = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>function()<!>
fun g() = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>property<!>
fun h() = this<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>@Outer<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>function<!>()
fun i() = this<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>@Outer<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>property<!>
}
inner class Inner {
fun innerFun() = function()
val innerProp = property
fun innerThisFun() = this@Outer.function()
val innerThisProp = this@Outer.property
inner class InnerInner {
fun f() = innerFun()
fun g() = innerProp
fun h() = this@Inner.innerFun()
fun i() = this@Inner.innerProp
}
}
}
@@ -27,7 +27,7 @@ class A<E>() : C(), T {
<!DEBUG_INFO_MISSING_UNRESOLVED!>super<!><C><!UNRESOLVED_REFERENCE!>@B<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
}
class B : T {
inner class B : T {
fun test() {
super<T>.foo();
super<<!NOT_A_SUPERTYPE!>C<!>>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
@@ -1,5 +1,5 @@
class A(val a:Int) {
class B() {
inner class B() {
fun Char.xx() : Any {
this : Char
val <!UNUSED_VARIABLE!>a<!> = {
@@ -1,6 +1,6 @@
class A(val a:Int) {
class B() {
inner class B() {
val x = this@B : B
val y = this@A : A
val z = this : B
+1 -1
View File
@@ -14,7 +14,7 @@
`C`super<C>@A.bar()
}
class B : T {
inner class B : T {
fun test() {
`T`super<T>.foo();
`C`super<C>@A.bar()