Add lookup for every expression's type

This commit is contained in:
Alexey Tsvetkov
2016-01-21 18:33:57 +03:00
parent 1ef615e020
commit 310a995bb1
19 changed files with 248 additions and 155 deletions
+15 -15
View File
@@ -4,33 +4,33 @@ import bar./*p:bar*/C
import baz.*
/*p:foo*/fun usages() {
val c = C()
val c = /*p:bar*/C()
c./*c:bar.C*/field
c./*c:bar.C*/field = 2
c./*c:bar.C*/func()
c./*c:bar.C*/B()
/*p:bar(C) p:kotlin(Int)*/c./*c:bar.C*/field
/*p:bar(C) p:kotlin(Int)*/c./*c:bar.C*/field = /*p:kotlin(Int)*/2
/*p:bar(C)*/c./*c:bar.C*/func()
/*p:bar(C) c:bar.C(B)*/c./*c:bar.C*/B()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/sfield
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/sfield = "new"
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/sfield
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/sfield = /*p:kotlin(String)*/"new"
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/sfunc()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/S()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:bar.C(S)*/C./*c:bar.C*/S()
// inherited from I
c./*c:bar.C*/ifunc()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/isfield
/*p:bar(C)*/c./*c:bar.C*/ifunc()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/isfield
// expected error: Unresolved reference: IS
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/IS()
val i: /*p:foo*/I = c
i./*c:foo.I*/ifunc()
val i: /*p:foo*/I = /*p:bar(C)*/c
/*p:foo(I)*/i./*c:foo.I*/ifunc()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/I./*c:foo.I*/isfield
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/I./*c:foo.I*/IS()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/I./*c:foo.I*/isfield
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.I(IS)*/I./*c:foo.I*/IS()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/F
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/F./*c:baz.E*/field
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/E./*c:baz.E*/F./*c:baz.E*/field
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/S./*c:baz.E*/func()
}