Introduced NewQualifiedExpressionResolver

This commit is contained in:
Stanislav Erokhin
2015-09-13 01:58:55 +03:00
parent 9b0182eb71
commit f8a018ae27
22 changed files with 1206 additions and 220 deletions
@@ -0,0 +1,69 @@
// MODULE: m1
// FILE: a.kt
package a
class B {
fun m1() {}
}
// MODULE: m2
// FILE: b.kt
package a
class B {
fun m2() {}
}
// MODULE: m3(m1, m2)
// FILE: c.kt
import a.B
fun test(b: B) {
b.m1()
b.<!UNRESOLVED_REFERENCE!>m2<!>()
val b_: B = B()
b_.m1()
val b_1: a.B = B()
b_1.m1()
val b_2: B = a.B()
b_2.m1()
}
//----------------------------TOP LEVEL---------------------
// MODULE: top_m1
// FILE: top_a.kt
class B {
fun m1() {}
}
// MODULE: top_m2
// FILE: top_b.kt
class B {
fun m2() {}
}
// MODULE: top_m3(top_m1, top_m2)
// FILE: top_c.kt
import B
fun test(b: B) {
b.m1()
b.<!UNRESOLVED_REFERENCE!>m2<!>()
val b_: B = B()
b_.m1()
}
// FILE: top_d.kt
fun test2(b: B) {
b.m1()
b.<!UNRESOLVED_REFERENCE!>m2<!>()
val b_: B = B()
b_.m1()
}
@@ -0,0 +1,86 @@
// -- Module: <m1> --
package
package a {
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m1(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <m2> --
package
package a {
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m2(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <m3> --
package
public fun test(/*0*/ b: a.B): kotlin.Unit
package a {
public final class B {
// -- Module: <m1> --
}
public final class B {
// -- Module: <m2> --
}
}
// -- Module: <top_m1> --
package
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m1(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// -- Module: <top_m2> --
package
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m2(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// -- Module: <top_m3> --
package
public fun test(/*0*/ b: B): kotlin.Unit
public fun test2(/*0*/ b: B): kotlin.Unit
public final class B {
// -- Module: <top_m1> --
}
public final class B {
// -- Module: <top_m2> --
}
@@ -0,0 +1,63 @@
// MODULE: m1
// FILE: a.kt
package a
class B {
fun m1() {}
}
// MODULE: m2
// FILE: b.kt
package a
class B {
fun m2() {}
}
// MODULE: m3(m2, m1)
// FILE: b.kt
import a.*
fun test(b: B) {
b.m2()
b.<!UNRESOLVED_REFERENCE!>m1<!>()
val b_: B = B()
b_.m2()
val b_1: a.B = B()
b_1.m2()
val b_2: B = a.B()
b_2.m2()
}
//----------------------------TOP LEVEL---------------------
// MODULE: top_m1
// FILE: top_a.kt
class B {
fun m1() {}
}
// MODULE: top_m2
// FILE: top_b.kt
class B {
fun m2() {}
}
// MODULE: top_m3(top_m2, top_m1)
// FILE: top_c.kt
fun test(b: B) {
b.m2()
b.<!UNRESOLVED_REFERENCE!>m1<!>()
val b_: B = B()
b_.m2()
val b_2 = B()
b_2.m2()
}
@@ -0,0 +1,85 @@
// -- Module: <m1> --
package
package a {
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m1(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <m2> --
package
package a {
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m2(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <m3> --
package
public fun test(/*0*/ b: a.B): kotlin.Unit
package a {
public final class B {
// -- Module: <m1> --
}
public final class B {
// -- Module: <m2> --
}
}
// -- Module: <top_m1> --
package
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m1(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// -- Module: <top_m2> --
package
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun m2(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// -- Module: <top_m3> --
package
public fun test(/*0*/ b: B): kotlin.Unit
public final class B {
// -- Module: <top_m1> --
}
public final class B {
// -- Module: <top_m2> --
}
@@ -11,7 +11,7 @@ class X
// FILE: c.kt
package c
import <!CONFLICTING_IMPORT!>a.x<!>
import <!CONFLICTING_IMPORT!>b.x<!>
import a.<!UNRESOLVED_REFERENCE!>x<!>
import b.<!UNRESOLVED_REFERENCE!>x<!>
class Y : <!UNRESOLVED_REFERENCE!>x<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>X<!>
@@ -0,0 +1,67 @@
// MODULE: m1
// FILE: a.kt
package a.b
class c {
fun ab_c() {}
}
// MODULE: m2
// FILE: b.kt
package a
class b<T> {
class c {
fun a_bc() {}
}
}
// MODULE: m3(m1, m2)
// FILE: c.kt
import a.b.c
fun test(ab_c: c) {
ab_c.ab_c()
val ab_c2: a.b.c = a.b.c()
ab_c2.ab_c()
}
fun test2(a_bc: a.b<Int>.c) {
a_bc.<!UNRESOLVED_REFERENCE!>a_bc<!>() // todo
}
//---------------------------TOP LEVEL----------
// MODULE: top_m1
// FILE: top_a.kt
package a
class b {
fun a_b() {}
}
// MODULE: top_m2
// FILE: top_b.kt
class a<T> {
class b {
fun _ab() {}
}
fun _a() {}
}
// MODULE: top_m3(top_m1, top_m2)
// FILE: top_c.kt
import a.b
fun test(a_b: b) {
a_b.a_b()
val a_b2: a.b = a.b()
a_b2.a_b()
}
fun test2(_ab: a<Int>.b) {
_ab.<!UNRESOLVED_REFERENCE!>_ab<!>() // todo
}
@@ -0,0 +1,112 @@
// -- Module: <m1> --
package
package a {
package a.b {
public final class c {
public constructor c()
public final fun ab_c(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
}
// -- Module: <m2> --
package
package a {
public final class b</*0*/ T> {
public constructor b</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class c {
public constructor c()
public final fun a_bc(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
}
// -- Module: <m3> --
package
public fun test(/*0*/ ab_c: a.b.c): kotlin.Unit
public fun test2(/*0*/ a_bc: a.b.c): kotlin.Unit
package a {
public final class b</*0*/ T> {
// -- Module: <m2> --
}
package a.b {
public final class c {
// -- Module: <m1> --
}
}
}
// -- Module: <top_m1> --
package
package a {
public final class b {
public constructor b()
public final fun a_b(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <top_m2> --
package
public final class a</*0*/ T> {
public constructor a</*0*/ T>()
public final fun _a(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class b {
public constructor b()
public final fun _ab(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <top_m3> --
package
public fun test(/*0*/ a_b: a.b): kotlin.Unit
public fun test2(/*0*/ _ab: a.b): kotlin.Unit
public final class a</*0*/ T> {
// -- Module: <top_m2> --
}
package a {
public final class b {
// -- Module: <top_m1> --
}
}
+7 -7
View File
@@ -5,16 +5,16 @@ import b.B //class
import b.foo //function
import b.ext //extension function
import b.value //property
import b.C.Companion.<!CANNOT_BE_IMPORTED!>bar<!> //function from companion object
import b.C.Companion.<!CANNOT_BE_IMPORTED!>cValue<!> //property from companion object
import b.<!CANNOT_IMPORT_FROM_ELEMENT!>constant<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>fff<!> //function from val
import b.<!CANNOT_IMPORT_FROM_ELEMENT!>constant<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>dValue<!> //property from val
import b.C.Companion.<!UNRESOLVED_REFERENCE!>bar<!> //function from companion object
import b.C.Companion.<!UNRESOLVED_REFERENCE!>cValue<!> //property from companion object
import b.<!UNRESOLVED_REFERENCE!>constant<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>fff<!> //function from val
import b.<!UNRESOLVED_REFERENCE!>constant<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>dValue<!> //property from val
import b.constant
import b.E.Companion.<!CANNOT_BE_IMPORTED!>f<!> //val from companion object
import b.E.Companion.<!UNRESOLVED_REFERENCE!>f<!> //val from companion object
import <!UNRESOLVED_REFERENCE!>smth<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>illegal<!>
import b.C.<!UNRESOLVED_REFERENCE!>smth<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>illegal<!>
import b.<!CANNOT_IMPORT_FROM_ELEMENT!>bar<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>smth<!>
import b.<!CANNOT_IMPORT_FROM_ELEMENT!>bar<!>.*
import b.<!UNRESOLVED_REFERENCE!>bar<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>smth<!>
import b.<!UNRESOLVED_REFERENCE!>bar<!>.*
fun test(arg: B) {
foo(value)
@@ -3,7 +3,7 @@ package test
import <!UNRESOLVED_REFERENCE!>some<!>.<!SYNTAX!><!>
import <!SYNTAX!>.some<!>
import <!SYNTAX!>.kotlin<!>
import kotlin.<!SYNTAX!><!>
import <!UNRESOLVED_REFERENCE!>kotlin<!>.<!SYNTAX!><!>
import<!SYNTAX!><!>
import <!SYNTAX!>.<!>
import <!SYNTAX!>*<!>
@@ -0,0 +1,31 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// FILE: a.kt
package a
class A {
class B
}
// FILE: b.kt
package a
class D {
class B
}
// FILE: c.kt
import <!CONFLICTING_IMPORT!>a.A.B<!>
import <!CONFLICTING_IMPORT!>a.D.B<!>
fun test(b: <!UNRESOLVED_REFERENCE!>B<!>) {
<!UNRESOLVED_REFERENCE!>B<!>()
}
// FILE: d.kt
import a.A.*
import a.D.*
// todo ambiguvity here
fun test2(b: <!UNRESOLVED_REFERENCE!>B<!>) {
<!UNRESOLVED_REFERENCE!>B<!>()
}
@@ -0,0 +1,35 @@
package
public fun test(/*0*/ b: [ERROR : B]): kotlin.Unit
public fun test2(/*0*/ b: [ERROR : B]): kotlin.Unit
package a {
public final class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public final class D {
public constructor D()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
}
@@ -0,0 +1,128 @@
// MODULE: m1
// FILE: a.kt
package a.b
fun ab_fun() {}
class c {
fun ab_c() {}
class d {
fun ab_cd() {}
}
}
// MODULE: m2
// FILE: b.kt
package a
fun a_fun() {}
class b {
fun a_b() {}
class c {
fun a_bc() {}
}
}
// MODULE: m3(m1, m2)
// FILE: c.kt
import a.a_fun
import a.b
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
ab_fun()
}
// FILE: d.kt
package a
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
ab_fun()
}
//---- Changed dependence order
// MODULE: m4(m2, m1)
// FILE: c.kt
import a.a_fun
import a.b
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
ab_fun()
}
// FILE: d.kt
package a
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
ab_fun()
}
@@ -0,0 +1,101 @@
// -- Module: <m1> --
package
package a {
package a.b {
public fun ab_fun(): kotlin.Unit
public final class c {
public constructor c()
public final fun ab_c(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class d {
public constructor d()
public final fun ab_cd(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
}
}
// -- Module: <m2> --
package
package a {
public fun a_fun(): kotlin.Unit
public final class b {
public constructor b()
public final fun a_b(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class c {
public constructor c()
public final fun a_bc(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
}
// -- Module: <m3> --
package
public fun test(/*0*/ a_b: a.b): kotlin.Unit
public fun test2(/*0*/ ab_c: a.b.c): kotlin.Unit
package a {
public fun a_fun(): kotlin.Unit
public fun test(/*0*/ a_b: a.b): kotlin.Unit
public fun test2(/*0*/ ab_c: a.b.c): kotlin.Unit
public final class b {
// -- Module: <m2> --
}
package a.b {
public fun ab_fun(): kotlin.Unit
public final class c {
// -- Module: <m1> --
}
}
}
// -- Module: <m4> --
package
public fun test(/*0*/ a_b: a.b): kotlin.Unit
public fun test2(/*0*/ ab_c: a.b.c): kotlin.Unit
package a {
public fun a_fun(): kotlin.Unit
public fun test(/*0*/ a_b: a.b): kotlin.Unit
public fun test2(/*0*/ ab_c: a.b.c): kotlin.Unit
public final class b {
// -- Module: <m2> --
}
package a.b {
public fun ab_fun(): kotlin.Unit
public final class c {
// -- Module: <m1> --
}
}
}
@@ -0,0 +1,62 @@
// MODULE: m1
// FILE: a.kt
package a
fun a_fun() {}
class b {
fun a_b() {}
class c {
fun a_bc() {}
}
}
// MODULE: m2
// FILE: b.kt
fun _fun() {}
class a {
fun _a() {}
class b {
fun _ab() {}
}
}
// MODULE: m3(m1, m2)
// FILE: c.kt
import a.a_fun
import a.b
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
a_fun()
}
// FILE: d.kt
fun test2(_a: a) {
_a._a()
val _ab: a.b = a.b()
_ab.<!UNRESOLVED_REFERENCE!>_ab<!>() // todo
_fun()
}
// FILE: e.kt
import a
import _fun
fun test3(_a: a) {
_a._a()
val _ab: a.b = a.b()
_ab.<!UNRESOLVED_REFERENCE!>_ab<!>() // todo
_fun()
}
@@ -0,0 +1,67 @@
// -- Module: <m1> --
package
package a {
public fun a_fun(): kotlin.Unit
public final class b {
public constructor b()
public final fun a_b(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class c {
public constructor c()
public final fun a_bc(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
}
// -- Module: <m2> --
package
public fun _fun(): kotlin.Unit
public final class a {
public constructor a()
public final fun _a(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class b {
public constructor b()
public final fun _ab(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <m3> --
package
public fun _fun(): kotlin.Unit
public fun test(/*0*/ a_b: a.b): kotlin.Unit
public fun test2(/*0*/ _a: a): kotlin.Unit
public fun test3(/*0*/ _a: a): kotlin.Unit
public final class a {
// -- Module: <m2> --
}
package a {
public fun a_fun(): kotlin.Unit
public final class b {
// -- Module: <m1> --
}
}