FIR: introduce & use REFERENCE_BY_QUALIFIER positioning strategy

This commit is contained in:
Mikhail Glukhikh
2021-02-18 11:54:22 +03:00
parent 0accaf0f30
commit 34c90aab3b
138 changed files with 415 additions and 372 deletions
@@ -28,20 +28,20 @@ fun <T> fooT2() : (t : T) -> T {
fun main(args : Array<String>) {
args.foo()()
<!INAPPLICABLE_CANDIDATE!>args.foo1()()<!>
<!INAPPLICABLE_CANDIDATE!><!UNRESOLVED_REFERENCE!>a<!>.foo1()()<!>
args.<!INAPPLICABLE_CANDIDATE!>foo1<!>()()
<!UNRESOLVED_REFERENCE!>a<!>.<!INAPPLICABLE_CANDIDATE!>foo1<!>()()
<!UNRESOLVED_REFERENCE!>a<!>.foo1()(<!UNRESOLVED_REFERENCE!>a<!>)
args.foo1()(1)
<!INAPPLICABLE_CANDIDATE!>args.foo1()("1")<!>
<!INAPPLICABLE_CANDIDATE!><!UNRESOLVED_REFERENCE!>a<!>.foo1()("1")<!>
args.<!INAPPLICABLE_CANDIDATE!>foo1<!>()("1")
<!UNRESOLVED_REFERENCE!>a<!>.<!INAPPLICABLE_CANDIDATE!>foo1<!>()("1")
<!UNRESOLVED_REFERENCE!>a<!>.foo1()(<!UNRESOLVED_REFERENCE!>a<!>)
foo2()({})
<!INAPPLICABLE_CANDIDATE!>foo2<!>(){}
(foo2()){}
<!INAPPLICABLE_CANDIDATE!>(foo2()){x -> }<!>
<!INAPPLICABLE_CANDIDATE!>foo2()({x -> })<!>
<!INAPPLICABLE_CANDIDATE!>(foo2())<!>{x -> }
<!INAPPLICABLE_CANDIDATE!>foo2<!>()({x -> })
val a = fooT1(1)()
checkSubtype<Int>(a)
@@ -50,25 +50,25 @@ fun main(args : Array<String>) {
checkSubtype<Int>(b)
fooT2()(1) // : Any?
<!UNRESOLVED_REFERENCE!>1()<!>
<!UNRESOLVED_REFERENCE!>1{}<!>
<!UNRESOLVED_REFERENCE!>1(){}<!>
<!UNRESOLVED_REFERENCE!>1<!>()
<!UNRESOLVED_REFERENCE!>1<!>{}
<!UNRESOLVED_REFERENCE!>1<!>(){}
}
fun f() : Int.() -> Unit = {}
fun main1() {
1.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)()<!>;
1.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)<!>();
{1}();
(fun (x : Int) = x)(1)
1.<!UNRESOLVED_REFERENCE!>(fun Int.(x : Int) = x)(1)<!>;
1.<!UNRESOLVED_REFERENCE!>(fun Int.(x : Int) = x)<!>(1);
l@{1}()
1.<!UNRESOLVED_REFERENCE!>((fun Int.() = 1))()<!>
1.<!UNRESOLVED_REFERENCE!>(f())()<!>
1.<!UNRESOLVED_REFERENCE!>if(true){f()}else{f()}()<!>
1.<!UNRESOLVED_REFERENCE!>if(true)(fun Int.() {})else{f()}()<!>
1.<!UNRESOLVED_REFERENCE!>((fun Int.() = 1))<!>()
1.<!UNRESOLVED_REFERENCE!>(f())<!>()
1.<!UNRESOLVED_REFERENCE!>if(true){f()}else{f()}<!>()
1.<!UNRESOLVED_REFERENCE!>if(true)(fun Int.() {})else{f()}<!>()
1.<!UNRESOLVED_REFERENCE!>"sdf"()<!>
1.<!UNRESOLVED_REFERENCE!>"sdf"<!>()
1."sdf"
1.{}
@@ -76,12 +76,12 @@ fun main1() {
}
fun test() {
<!INAPPLICABLE_CANDIDATE!>{x : Int -> 1}()<!>;
<!INAPPLICABLE_CANDIDATE!>(fun Int.() = 1)()<!>
"sd".<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)()<!>
<!INAPPLICABLE_CANDIDATE!>{x : Int -> 1}<!>();
<!INAPPLICABLE_CANDIDATE!>(fun Int.() = 1)<!>()
"sd".<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)<!>()
val i : Int? = null
i.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)()<!>;
<!INAPPLICABLE_CANDIDATE!>{}<Int>()<!>
1?.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)()<!>
1.<!UNRESOLVED_REFERENCE!>{}()<!>
i.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)<!>();
<!INAPPLICABLE_CANDIDATE!>{}<!><Int>()
1?.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)<!>()
1.<!UNRESOLVED_REFERENCE!>{}<!>()
}