FIR: Fix ambiguity between current Companion and one from supertypes
Companion as qualifier should be found at static scope not a member one
This commit is contained in:
+5
-5
@@ -28,7 +28,7 @@ object O {
|
||||
fun f() {
|
||||
A.c
|
||||
A.hashCode()
|
||||
A().Nested
|
||||
A().<!UNRESOLVED_REFERENCE!>Nested<!>
|
||||
A.Nested()
|
||||
A().Inner()
|
||||
A.Companion.<!UNRESOLVED_REFERENCE!>Nested<!>
|
||||
@@ -42,10 +42,10 @@ fun f() {
|
||||
A.Companion.c
|
||||
A.Obj
|
||||
A.Companion.Obj2
|
||||
A.Obj2
|
||||
A.Obj2.c
|
||||
A.Nested2
|
||||
A.<!UNRESOLVED_REFERENCE!>Obj2<!>
|
||||
A.<!UNRESOLVED_REFERENCE!>Obj2<!>.<!UNRESOLVED_REFERENCE!>c<!>
|
||||
A.<!UNRESOLVED_REFERENCE!>Nested2<!>
|
||||
|
||||
O.O
|
||||
O.A()
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -33,12 +33,12 @@ enum class C {
|
||||
}
|
||||
|
||||
fun f() {
|
||||
C.E1.A
|
||||
C.E1.<!UNRESOLVED_REFERENCE!>A<!>
|
||||
C.E1.<!UNRESOLVED_REFERENCE!>A<!>()
|
||||
C.E2.B()
|
||||
|
||||
C.E2.O
|
||||
C.E3.O.InO
|
||||
C.E2.<!UNRESOLVED_REFERENCE!>O<!>
|
||||
C.E3.<!UNRESOLVED_REFERENCE!>O<!>.<!UNRESOLVED_REFERENCE!>InO<!>
|
||||
|
||||
C.O
|
||||
C.O.InO
|
||||
|
||||
+3
-3
@@ -33,12 +33,12 @@ enum class C {
|
||||
}
|
||||
|
||||
fun f() {
|
||||
C.E1.A
|
||||
C.E1.<!UNRESOLVED_REFERENCE!>A<!>
|
||||
C.E1.<!UNRESOLVED_REFERENCE!>A<!>()
|
||||
C.E2.B()
|
||||
|
||||
C.E2.O
|
||||
C.E3.O.InO
|
||||
C.E2.<!UNRESOLVED_REFERENCE!>O<!>
|
||||
C.E3.<!UNRESOLVED_REFERENCE!>O<!>.<!UNRESOLVED_REFERENCE!>InO<!>
|
||||
|
||||
C.O
|
||||
C.O.InO
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@ enum class Fruit(personal: Int) {
|
||||
|
||||
// Another example from KT-11769
|
||||
enum class EnumCompanion1(val x: Int) {
|
||||
INSTANCE(<!AMBIGUITY!>Companion<!>.<!UNRESOLVED_REFERENCE!>foo<!>()),
|
||||
INSTANCE(Companion.foo()),
|
||||
ANOTHER(foo());
|
||||
|
||||
companion object {
|
||||
|
||||
+19
-19
@@ -25,29 +25,29 @@ object Obj {
|
||||
|
||||
fun test(with: WithClassObject, without: WithoutClassObject, obj: Obj) {
|
||||
with.<!UNRESOLVED_REFERENCE!>Nested<!>()
|
||||
with.NestedWithClassObject
|
||||
with.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>
|
||||
with.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>()
|
||||
with.NestedWithClassObject.foo()
|
||||
with.NestedEnum.A
|
||||
with.NestedObj
|
||||
with.NestedObj()
|
||||
with.NestedObj.foo()
|
||||
with.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
with.<!UNRESOLVED_REFERENCE!>NestedEnum<!>.<!UNRESOLVED_REFERENCE!>A<!>
|
||||
with.<!UNRESOLVED_REFERENCE!>NestedObj<!>
|
||||
with.<!UNRESOLVED_REFERENCE!>NestedObj<!>()
|
||||
with.<!UNRESOLVED_REFERENCE!>NestedObj<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
|
||||
without.<!UNRESOLVED_REFERENCE!>Nested<!>()
|
||||
without.NestedWithClassObject
|
||||
without.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>
|
||||
without.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>()
|
||||
without.NestedWithClassObject.foo()
|
||||
without.NestedEnum.A
|
||||
without.NestedObj
|
||||
without.NestedObj()
|
||||
without.NestedObj.foo()
|
||||
without.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
without.<!UNRESOLVED_REFERENCE!>NestedEnum<!>.<!UNRESOLVED_REFERENCE!>A<!>
|
||||
without.<!UNRESOLVED_REFERENCE!>NestedObj<!>
|
||||
without.<!UNRESOLVED_REFERENCE!>NestedObj<!>()
|
||||
without.<!UNRESOLVED_REFERENCE!>NestedObj<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
|
||||
obj.<!UNRESOLVED_REFERENCE!>Nested<!>()
|
||||
obj.NestedWithClassObject
|
||||
obj.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>
|
||||
obj.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>()
|
||||
obj.NestedWithClassObject.foo()
|
||||
obj.NestedEnum.A
|
||||
obj.NestedObj
|
||||
obj.NestedObj()
|
||||
obj.NestedObj.foo()
|
||||
}
|
||||
obj.<!UNRESOLVED_REFERENCE!>NestedWithClassObject<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
obj.<!UNRESOLVED_REFERENCE!>NestedEnum<!>.<!UNRESOLVED_REFERENCE!>A<!>
|
||||
obj.<!UNRESOLVED_REFERENCE!>NestedObj<!>
|
||||
obj.<!UNRESOLVED_REFERENCE!>NestedObj<!>()
|
||||
obj.<!UNRESOLVED_REFERENCE!>NestedObj<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
|
||||
+7
-7
@@ -119,8 +119,8 @@ class C : O.B() {
|
||||
val b = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>A<!>::foo<!>
|
||||
|
||||
// DEPRECATED: Classifiers from companions of direct superclasses
|
||||
val e = FromCompanionA::foo
|
||||
val f = FromCompanionB::foo
|
||||
val e = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionA<!>::foo<!>
|
||||
val f = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionB<!>::foo<!>
|
||||
|
||||
// INVISIBLE: "cousin" supertypes themselves
|
||||
val g = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>Alpha<!>::foo<!>
|
||||
@@ -128,9 +128,9 @@ class C : O.B() {
|
||||
val i = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>Gamma<!>::foo<!>
|
||||
|
||||
// DEPRECATED: classifiers from "cousin" superclasses
|
||||
val k = FromAlpha::foo
|
||||
val l = FromBeta::foo
|
||||
val m = FromGamma::foo
|
||||
val k = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromAlpha<!>::foo<!>
|
||||
val l = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromBeta<!>::foo<!>
|
||||
val m = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromGamma<!>::foo<!>
|
||||
|
||||
// INVISIBLE: We don't see classifiers from companions of "cousin" superclasses
|
||||
val o = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionAlpha<!>::foo<!>
|
||||
@@ -138,5 +138,5 @@ class C : O.B() {
|
||||
val q = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionGamma<!>::foo<!>
|
||||
|
||||
// DEPRECATED: Classifiers from supertypes of our own companion
|
||||
val r = FromDelta::foo
|
||||
}
|
||||
val r = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromDelta<!>::foo<!>
|
||||
}
|
||||
|
||||
+7
-7
@@ -119,8 +119,8 @@ class C : O.B() {
|
||||
val b = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>A<!>::foo<!>
|
||||
|
||||
// DEPRECATED: Classifiers from companions of direct superclasses
|
||||
val e = FromCompanionA::foo
|
||||
val f = FromCompanionB::foo
|
||||
val e = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionA<!>::foo<!>
|
||||
val f = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionB<!>::foo<!>
|
||||
|
||||
// INVISIBLE: "cousin" supertypes themselves
|
||||
val g = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>Alpha<!>::foo<!>
|
||||
@@ -128,9 +128,9 @@ class C : O.B() {
|
||||
val i = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>Gamma<!>::foo<!>
|
||||
|
||||
// DEPRECATED: classifiers from "cousin" superclasses
|
||||
val k = FromAlpha::foo
|
||||
val l = FromBeta::foo
|
||||
val m = FromGamma::foo
|
||||
val k = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromAlpha<!>::foo<!>
|
||||
val l = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromBeta<!>::foo<!>
|
||||
val m = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromGamma<!>::foo<!>
|
||||
|
||||
// INVISIBLE: We don't see classifiers from companions of "cousin" superclasses
|
||||
val o = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionAlpha<!>::foo<!>
|
||||
@@ -138,5 +138,5 @@ class C : O.B() {
|
||||
val q = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromCompanionGamma<!>::foo<!>
|
||||
|
||||
// DEPRECATED: Classifiers from supertypes of our own companion
|
||||
val r = FromDelta::foo
|
||||
}
|
||||
val r = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromDelta<!>::foo<!>
|
||||
}
|
||||
|
||||
Vendored
+5
-5
@@ -12,7 +12,7 @@ object A {
|
||||
}
|
||||
|
||||
class Derived : Base() {
|
||||
val a = FromBaseCompanion::foo
|
||||
val a = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromBaseCompanion<!>::foo<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ object B {
|
||||
}
|
||||
|
||||
class Derived : Base() {
|
||||
val a = FromBaseCompanion::foo
|
||||
val a = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromBaseCompanion<!>::foo<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ object C {
|
||||
}
|
||||
|
||||
class Derived : Base() {
|
||||
val a = FromBaseCompanion::foo
|
||||
val a = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromBaseCompanion<!>::foo<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,6 @@ object D {
|
||||
}
|
||||
|
||||
class Derived : Base() {
|
||||
val a = FromBaseCompanion::foo
|
||||
val a = <!UNRESOLVED_REFERENCE!><!UNRESOLVED_REFERENCE!>FromBaseCompanion<!>::foo<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@ fun foo() {
|
||||
val b = object {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object c<!> {}
|
||||
}
|
||||
b.c
|
||||
b.<!UNRESOLVED_REFERENCE!>c<!>
|
||||
class A {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object d<!> {}
|
||||
}
|
||||
val f = {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object e<!> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -32,8 +32,8 @@ fun testY() {
|
||||
|
||||
fun test(x: X) {
|
||||
val interface_as_fun = x.<!UNRESOLVED_REFERENCE!>A<!>()
|
||||
val interface_as_val = x.A
|
||||
val interface_as_val = x.<!UNRESOLVED_REFERENCE!>A<!>
|
||||
|
||||
val object_as_fun = x.<!UNRESOLVED_REFERENCE!>B<!>()
|
||||
val class_as_val = x.C
|
||||
val class_as_val = x.<!UNRESOLVED_REFERENCE!>C<!>
|
||||
}
|
||||
|
||||
+2
-2
@@ -62,7 +62,7 @@ fun foo(
|
||||
test.ObjectAlias::func
|
||||
|
||||
test.ObjectSample.Nested::func
|
||||
test.ObjectAlias.Nested::func
|
||||
<!UNRESOLVED_REFERENCE!>test.ObjectAlias.<!UNRESOLVED_REFERENCE!>Nested<!>::func<!>
|
||||
|
||||
test.EnumSample::Nested
|
||||
test.EnumAlias::Nested
|
||||
@@ -72,4 +72,4 @@ fun foo(
|
||||
|
||||
test.EnumSample.Nested::func
|
||||
<!UNRESOLVED_REFERENCE!>test.EnumAlias.<!UNRESOLVED_REFERENCE!>Nested<!>::func<!>
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user