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:
Denis Zharkov
2020-11-06 17:41:50 +03:00
parent 96352b9c8c
commit a5545b96cb
21 changed files with 114 additions and 216 deletions
@@ -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<!>
}
@@ -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<!>
}
@@ -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<!> {}
}
}
}