Refactoring & clarification: implement new FIR tower resolver

This commit is contained in:
Mikhail Glukhikh
2020-01-10 18:58:42 +03:00
parent a3ab763f0b
commit 14204a842a
125 changed files with 1804 additions and 1085 deletions
@@ -6,8 +6,8 @@ fun test1() {
}
fun test2(f: String.(Int) -> Unit) {
11.(<!UNRESOLVED_REFERENCE!>f<!>)(1)
11.(<!UNRESOLVED_REFERENCE!>f<!>)()
11.(<!INAPPLICABLE_CANDIDATE!>f<!>)(1)
11.(<!INAPPLICABLE_CANDIDATE!>f<!>)()
}
fun test3() {
@@ -10,5 +10,5 @@ fun test(identifier: SomeClass, fn: String.() -> Unit) {
<!INAPPLICABLE_CANDIDATE!>identifier<!>()
<!INAPPLICABLE_CANDIDATE!>identifier<!>(123)
<!INAPPLICABLE_CANDIDATE!>identifier<!>(1, 2)
1.<!UNRESOLVED_REFERENCE!>fn<!>()
1.<!INAPPLICABLE_CANDIDATE!>fn<!>()
}
@@ -15,8 +15,8 @@ fun test(a: A) {
a.<!INAPPLICABLE_CANDIDATE!>x<!>()
<!INAPPLICABLE_CANDIDATE!>(a.x)()<!>
if (a.x != null) {
a.x() // todo
(a.x)()
a.<!INAPPLICABLE_CANDIDATE!>x<!>() // todo
<!INAPPLICABLE_CANDIDATE!>(a.x)()<!>
}
}
}
@@ -13,9 +13,9 @@ fun test(a: A, b: B) {
a.foo(b)
with(a) {
b.<!UNRESOLVED_REFERENCE!>foo<!>()
b.foo()
b.(<!UNRESOLVED_REFERENCE!>foo<!>)()
b.(foo)()
<!UNRESOLVED_REFERENCE!>(b.<!INAPPLICABLE_CANDIDATE!>foo<!>)()<!>
@@ -24,10 +24,10 @@ fun test(a: A, b: B) {
}
with(b) {
a.foo()
a.(foo)()
a.<!INAPPLICABLE_CANDIDATE!>foo<!>()
a.(<!INAPPLICABLE_CANDIDATE!>foo<!>)()
(a.foo)()
<!INAPPLICABLE_CANDIDATE!>(a.foo)()<!>
(a.foo)(this)
a.foo(this)
@@ -59,17 +59,17 @@ fun test(a: A, b: B) {
b.(foo)()
<!INAPPLICABLE_CANDIDATE!>(b.foo)()<!>
<!UNRESOLVED_REFERENCE!>(b.<!UNRESOLVED_REFERENCE!>foo<!>)()<!>
foo(b)
(foo)(b)
}
with(b) {
a.foo()
a.(foo)()
a.<!INAPPLICABLE_CANDIDATE!>foo<!>()
a.(<!INAPPLICABLE_CANDIDATE!>foo<!>)()
(a.foo)()
<!INAPPLICABLE_CANDIDATE!>(a.foo)()<!>
(a.foo)(this)
a.foo(this)
@@ -20,7 +20,7 @@ val D.attr: B
fun main() {
val b = D()
b.attr {} // overload resolution ambiguity
b.<!AMBIGUITY!>attr<!> {} // overload resolution ambiguity
val d = b.attr
d {} // no error
@@ -6,11 +6,11 @@ class B
fun test(a: A, b: B) {
with(b) {
a.foo() // here must be error, because a is not extension receiver
a.<!INAPPLICABLE_CANDIDATE!>foo<!>() // here must be error, because a is not extension receiver
a.foo(this)
(a.foo)()
<!INAPPLICABLE_CANDIDATE!>(a.foo)()<!>
(a.foo)(this)
}
@@ -9,5 +9,5 @@ fun test(identifier: SomeClass, fn: String.() -> Unit) {
<!INAPPLICABLE_CANDIDATE!>identifier<!>()
<!INAPPLICABLE_CANDIDATE!>identifier<!>(123)
<!INAPPLICABLE_CANDIDATE!>identifier<!>(1, 2)
1.<!UNRESOLVED_REFERENCE!>fn<!>()
1.<!INAPPLICABLE_CANDIDATE!>fn<!>()
}