[FIR] Use static & qualified scopes to access qualified callables
This commit provides more correct logic for creating scopes based on FirResolvedQualifier & eliminates QualifiedReceiverTowerDataConsumer
This commit is contained in:
+4
-4
@@ -47,18 +47,18 @@ fun test() {
|
||||
val ic: I.NC = I.NC()
|
||||
val ii: I.NI? = null
|
||||
|
||||
val bc: B.NC = B.NC()
|
||||
val bc: B.NC = B.<!UNRESOLVED_REFERENCE!>NC<!>()
|
||||
val bic: B.IC = B().IC()
|
||||
val bi: B.NI? = null
|
||||
|
||||
val cc: C.NC = C.NC()
|
||||
val cc: C.NC = C.<!UNRESOLVED_REFERENCE!>NC<!>()
|
||||
val ci: C.NI? = null
|
||||
|
||||
val dc: D.NC = D.NC()
|
||||
val dc: D.NC = D.<!UNRESOLVED_REFERENCE!>NC<!>()
|
||||
val dic: D.IC = D().IC()
|
||||
val di: D.NI? = null
|
||||
|
||||
val kc: K.NC = K.NC()
|
||||
val kc: K.NC = K.<!UNRESOLVED_REFERENCE!>NC<!>()
|
||||
val kic: K.IC = K().IC()
|
||||
val ki: K.NI? = null
|
||||
}
|
||||
|
||||
+3
-3
@@ -31,14 +31,14 @@ fun test() {
|
||||
val ic: I.NC = I.NC()
|
||||
val ii: I.NI? = null
|
||||
|
||||
val bc: B.NC = B.NC()
|
||||
val bc: B.NC = B.<!UNRESOLVED_REFERENCE!>NC<!>()
|
||||
val bic: B.IC = B().IC()
|
||||
val bi: B.NI? = null
|
||||
|
||||
val cc: C.NC = C.NC()
|
||||
val cc: C.NC = C.<!UNRESOLVED_REFERENCE!>NC<!>()
|
||||
val ci: C.NI? = null
|
||||
|
||||
val dc: D.NC = D.NC()
|
||||
val dc: D.NC = D.<!UNRESOLVED_REFERENCE!>NC<!>()
|
||||
val dic: D.IC = D().IC()
|
||||
val di: D.NI? = null
|
||||
}
|
||||
|
||||
+4
-4
@@ -25,8 +25,8 @@ fun main() {
|
||||
C.foo()
|
||||
C.bar()
|
||||
|
||||
K.a
|
||||
K.b
|
||||
K.foo()
|
||||
K.bar()
|
||||
K.<!UNRESOLVED_REFERENCE!>a<!>
|
||||
K.<!UNRESOLVED_REFERENCE!>b<!>
|
||||
K.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
K.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
}
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ class X: A {
|
||||
init {
|
||||
A_S()
|
||||
A.A_S()
|
||||
X.A_S()
|
||||
X.<!UNRESOLVED_REFERENCE!>A_S<!>()
|
||||
}
|
||||
|
||||
object xD {
|
||||
@@ -51,7 +51,7 @@ class Y: B() {
|
||||
|
||||
B_S()
|
||||
B.B_S()
|
||||
Y.B_S()
|
||||
Y.<!UNRESOLVED_REFERENCE!>B_S<!>()
|
||||
}
|
||||
|
||||
object X {
|
||||
|
||||
+14
-14
@@ -43,20 +43,20 @@ class X: D() {
|
||||
|
||||
A_S()
|
||||
A.A_S()
|
||||
C.A_S()
|
||||
D.A_S()
|
||||
X.A_S()
|
||||
C.<!UNRESOLVED_REFERENCE!>A_S<!>()
|
||||
D.<!UNRESOLVED_REFERENCE!>A_S<!>()
|
||||
X.<!UNRESOLVED_REFERENCE!>A_S<!>()
|
||||
|
||||
B_S()
|
||||
B.B_S()
|
||||
C.B_S()
|
||||
D.B_S()
|
||||
X.B_S()
|
||||
C.<!UNRESOLVED_REFERENCE!>B_S<!>()
|
||||
D.<!UNRESOLVED_REFERENCE!>B_S<!>()
|
||||
X.<!UNRESOLVED_REFERENCE!>B_S<!>()
|
||||
|
||||
E_S()
|
||||
E.E_S()
|
||||
D.E_S()
|
||||
X.E_S()
|
||||
D.<!UNRESOLVED_REFERENCE!>E_S<!>()
|
||||
X.<!UNRESOLVED_REFERENCE!>E_S<!>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,15 +68,15 @@ class Y: F() {
|
||||
Y.<!UNRESOLVED_REFERENCE!>B_<!>()
|
||||
|
||||
A_S()
|
||||
F.A_S()
|
||||
Y.A_S()
|
||||
F.<!UNRESOLVED_REFERENCE!>A_S<!>()
|
||||
Y.<!UNRESOLVED_REFERENCE!>A_S<!>()
|
||||
|
||||
B_S()
|
||||
F.B_S()
|
||||
Y.B_S()
|
||||
F.<!UNRESOLVED_REFERENCE!>B_S<!>()
|
||||
Y.<!UNRESOLVED_REFERENCE!>B_S<!>()
|
||||
|
||||
E_S()
|
||||
F.E_S()
|
||||
Y.E_S()
|
||||
F.<!UNRESOLVED_REFERENCE!>E_S<!>()
|
||||
Y.<!UNRESOLVED_REFERENCE!>E_S<!>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,9 +31,9 @@ fun test() {
|
||||
C.b
|
||||
C.bar()
|
||||
|
||||
K.a
|
||||
K.b
|
||||
K.bar()
|
||||
K.<!UNRESOLVED_REFERENCE!>a<!>
|
||||
K.<!UNRESOLVED_REFERENCE!>b<!>
|
||||
K.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
|
||||
D.a
|
||||
D.b
|
||||
|
||||
Vendored
+3
-3
@@ -37,9 +37,9 @@ fun test() {
|
||||
C.b
|
||||
C.bar()
|
||||
|
||||
K.a
|
||||
K.b
|
||||
K.bar()
|
||||
K.<!UNRESOLVED_REFERENCE!>a<!>
|
||||
K.<!UNRESOLVED_REFERENCE!>b<!>
|
||||
K.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
|
||||
D.a
|
||||
D.b
|
||||
|
||||
+6
-6
@@ -31,8 +31,8 @@ class XN: X() {
|
||||
init {
|
||||
foo()
|
||||
A.foo()
|
||||
X.foo()
|
||||
XN.foo()
|
||||
X.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
XN.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,12 +40,12 @@ class YN: Y() {
|
||||
init {
|
||||
foo()
|
||||
A.foo()
|
||||
Y.foo()
|
||||
YN.foo()
|
||||
Y.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
YN.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
|
||||
bar()
|
||||
B.bar()
|
||||
Y.bar()
|
||||
YN.bar()
|
||||
Y.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
YN.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -16,12 +16,12 @@ class D: C() {
|
||||
init {
|
||||
foo()
|
||||
A.foo()
|
||||
B.foo()
|
||||
B.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
C.foo()
|
||||
D.foo()
|
||||
D.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
|
||||
bar()
|
||||
C.bar()
|
||||
D.bar()
|
||||
D.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -47,8 +47,8 @@ fun test(a: KotlinClass, b: KotlinClass2) {
|
||||
JavaClass.<!INAPPLICABLE_CANDIDATE!>bar1<!>()
|
||||
JavaClass.<!INAPPLICABLE_CANDIDATE!>CONST1<!>
|
||||
|
||||
KotlinClass.<!INAPPLICABLE_CANDIDATE!>bar1<!>() // Currently it's unresolved, but it should be prohibited even in case it would be resolved
|
||||
KotlinClass.<!INAPPLICABLE_CANDIDATE!>CONST1<!>
|
||||
KotlinClass.<!UNRESOLVED_REFERENCE!>bar1<!>() // Currently it's unresolved, but it should be prohibited even in case it would be resolved
|
||||
KotlinClass.<!UNRESOLVED_REFERENCE!>CONST1<!>
|
||||
|
||||
JavaClassSamePackage.<!INAPPLICABLE_CANDIDATE!>bar1<!>()
|
||||
JavaClassSamePackage.bar2()
|
||||
|
||||
+2
-2
@@ -10,6 +10,6 @@ class C {
|
||||
typealias CA = C
|
||||
|
||||
val test1 = CA
|
||||
val test2 = CA.<!UNRESOLVED_REFERENCE!>Companion<!>
|
||||
val test2 = CA.Companion
|
||||
val test3 = CA.<!UNRESOLVED_REFERENCE!>x<!>
|
||||
val test4 = CA.<!UNRESOLVED_REFERENCE!>Companion<!>.<!UNRESOLVED_REFERENCE!>x<!>
|
||||
val test4 = CA.Companion.x
|
||||
|
||||
Vendored
+1
-1
@@ -8,4 +8,4 @@ object Since_1_1 {
|
||||
typealias Since_1_1_Alias = Since_1_1
|
||||
|
||||
val test1 = Since_1_1_Alias
|
||||
val test2 = Since_1_1_Alias.<!UNRESOLVED_REFERENCE!>x<!>
|
||||
val test2 = Since_1_1_Alias.x
|
||||
+2
-2
@@ -7,8 +7,8 @@ typealias GenericTestObject<T> = AnObject
|
||||
|
||||
val test11: AnObject = GenericTestObject
|
||||
val test12: GenericTestObject<*> = GenericTestObject
|
||||
val test13: String = GenericTestObject.<!UNRESOLVED_REFERENCE!>ok<!>
|
||||
val test14: String = GenericTestObject.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
val test13: String = GenericTestObject.ok
|
||||
val test14: String = GenericTestObject.foo()
|
||||
|
||||
class GenericClassWithCompanion<T> {
|
||||
companion object {
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ val seeAlsoDerivedFoo: String = JDerived.foo()
|
||||
|
||||
// Referencing nested classes via type alias should be prohibited
|
||||
// (in type position and in expression position)
|
||||
val testNested1: JT.Nested = JT.Nested()
|
||||
val testNested1: JT.Nested = JT.<!UNRESOLVED_REFERENCE!>Nested<!>()
|
||||
val testNested2: KT.Nested = KT.Nested()
|
||||
val testNested3: IT.Nested = IT.Nested()
|
||||
val testInner1: JT.Inner = JT.<!UNRESOLVED_REFERENCE!>Inner<!>()
|
||||
|
||||
@@ -13,9 +13,9 @@ class C {
|
||||
}
|
||||
}
|
||||
|
||||
val c = C.Self.<!UNRESOLVED_REFERENCE!>Self<!>()
|
||||
val n = C.Self.Nested()
|
||||
val x = C.Self.<!UNRESOLVED_REFERENCE!>X<!>
|
||||
val n2 = C.Nested.Root.<!UNRESOLVED_REFERENCE!>Nested<!>.<!UNRESOLVED_REFERENCE!>N2<!>()
|
||||
val ic = C.Self.<!UNRESOLVED_REFERENCE!>InCompanion<!>()
|
||||
val ok = C.Self.<!UNRESOLVED_REFERENCE!>ok<!>
|
||||
val c = C.<!UNRESOLVED_REFERENCE!>Self<!>.<!UNRESOLVED_REFERENCE!>Self<!>()
|
||||
val n = C.<!UNRESOLVED_REFERENCE!>Self<!>.<!UNRESOLVED_REFERENCE!>Nested<!>()
|
||||
val x = C.<!UNRESOLVED_REFERENCE!>Self<!>.<!UNRESOLVED_REFERENCE!>X<!>
|
||||
val n2 = C.Nested.<!UNRESOLVED_REFERENCE!>Root<!>.<!UNRESOLVED_REFERENCE!>Nested<!>.<!UNRESOLVED_REFERENCE!>N2<!>()
|
||||
val ic = C.<!UNRESOLVED_REFERENCE!>Self<!>.<!UNRESOLVED_REFERENCE!>InCompanion<!>()
|
||||
val ok = C.<!UNRESOLVED_REFERENCE!>Self<!>.<!UNRESOLVED_REFERENCE!>ok<!>
|
||||
|
||||
@@ -7,15 +7,15 @@ typealias TestObject = AnObject
|
||||
|
||||
val test11: AnObject = TestObject
|
||||
val test12: TestObject = TestObject
|
||||
val test13: String = TestObject.<!UNRESOLVED_REFERENCE!>ok<!>
|
||||
val test14: String = TestObject.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
val test13: String = TestObject.ok
|
||||
val test14: String = TestObject.foo()
|
||||
|
||||
typealias TestObject2 = TestObject
|
||||
|
||||
val test21: AnObject = TestObject2
|
||||
val test22: TestObject2 = TestObject2
|
||||
val test23: String = TestObject2.<!UNRESOLVED_REFERENCE!>ok<!>
|
||||
val test24: String = TestObject2.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
val test23: String = TestObject2.ok
|
||||
val test24: String = TestObject2.foo()
|
||||
|
||||
class ClassWithCompanion {
|
||||
companion object {
|
||||
|
||||
+3
-3
@@ -53,7 +53,7 @@ fun foo(
|
||||
test.ClassAlias::func
|
||||
|
||||
test.ClassSample.Nested::func
|
||||
test.ClassAlias.<!UNRESOLVED_REFERENCE!>Nested<!>::func
|
||||
test.ClassAlias.Nested::func
|
||||
|
||||
test.ObjectSample::Nested
|
||||
test.ObjectAlias::Nested
|
||||
@@ -62,7 +62,7 @@ fun foo(
|
||||
test.ObjectAlias::func
|
||||
|
||||
test.ObjectSample.Nested::func
|
||||
test.ObjectAlias.<!UNRESOLVED_REFERENCE!>Nested<!>::func
|
||||
test.ObjectAlias.Nested::func
|
||||
|
||||
test.EnumSample::Nested
|
||||
test.EnumAlias::Nested
|
||||
@@ -71,5 +71,5 @@ fun foo(
|
||||
test.EnumAlias::func
|
||||
|
||||
test.EnumSample.Nested::func
|
||||
test.EnumAlias.<!UNRESOLVED_REFERENCE!>Nested<!>::func
|
||||
test.EnumAlias.Nested::func
|
||||
}
|
||||
Reference in New Issue
Block a user