Report 'nested class accessed via instance reference' error

This commit is contained in:
Svetlana Isakova
2014-08-01 14:02:27 +04:00
parent d150a26f8a
commit 7f33ad90a6
28 changed files with 224 additions and 41 deletions
@@ -23,6 +23,6 @@ class Outer {
fun Outer.foo() {
Outer()
<!UNRESOLVED_REFERENCE!>Nested<!>()
<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>Nested<!>()
Inner()
}
@@ -0,0 +1,54 @@
trait N { fun foo() = 1 }
class WithClassObject {
class object {}
class Nested()
class NestedWithClassObject { class object : N }
enum class NestedEnum { A }
object NestedObj : N { fun invoke() = 1 }
}
class WithoutClassObject {
class Nested()
class NestedWithClassObject { class object : N }
enum class NestedEnum { A }
object NestedObj : N { fun invoke() = 1 }
}
object Obj {
class Nested()
class NestedWithClassObject { class object : N }
enum class NestedEnum { A }
object NestedObj : N { fun invoke() = 1 }
}
fun test(with: WithClassObject, without: WithoutClassObject, obj: Obj) {
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>Nested<!>()
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>()
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>.foo()
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedEnum<!>.A
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>()
with.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>.foo()
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>Nested<!>()
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>()
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>.foo()
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedEnum<!>.A
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>()
without.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>.foo()
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>Nested<!>()
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>()
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedWithClassObject<!>.foo()
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedEnum<!>.A
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>()
obj.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>NestedObj<!>.foo()
}
@@ -0,0 +1,12 @@
//no nested class access via instance reference error
fun test() {
A.f(<!TYPE_MISMATCH!>""<!>)
}
class A() {
class object {
object f {
fun invoke(i: Int) = i
}
}
}
@@ -6,7 +6,7 @@ class A {
}
fun A.main() {
::<!UNRESOLVED_REFERENCE!>Nested<!>
::<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>Nested<!>
val y = A::Nested
y : KFunction0<A.Nested>