[FIR] Properly set isReceiver for implicit invoke on function types

This commit is contained in:
Nikolay Lunyak
2023-11-28 12:01:34 +02:00
committed by Space Team
parent 2bd77d5cdc
commit c69c34ff8b
11 changed files with 21 additions and 45 deletions
@@ -1,16 +1,16 @@
fun test1() {
<!ARGUMENT_TYPE_MISMATCH!>1<!>. (fun String.(i: Int) = i )(1)
<!ARGUMENT_TYPE_MISMATCH!>1<!>.(label@ fun String.(i: Int) = i )(1)
1. <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>(fun String.(i: Int) = i )<!>(1)
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>(label@ fun String.(i: Int) = i )<!>(1)
}
fun test2(f: String.(Int) -> Unit) {
<!ARGUMENT_TYPE_MISMATCH!>11<!>.(f)(1)
<!ARGUMENT_TYPE_MISMATCH!>11<!>.(f)<!NO_VALUE_FOR_PARAMETER!>()<!>
11.(<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>f<!>)(1)
11.(f)<!NO_VALUE_FOR_PARAMETER!>()<!>
}
fun test3() {
fun foo(): String.(Int) -> Unit = {}
<!ARGUMENT_TYPE_MISMATCH!>1<!>.(foo())(1)
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>(foo())<!>(1)
}
@@ -9,5 +9,5 @@ fun test(identifier: SomeClass, fn: String.() -> Unit) {
<!NONE_APPLICABLE!>identifier<!>()
<!NONE_APPLICABLE!>identifier<!>(123)
<!OPERATOR_MODIFIER_REQUIRED!>identifier<!>(<!ARGUMENT_TYPE_MISMATCH!>1<!>, <!TOO_MANY_ARGUMENTS!>2<!>)
<!ARGUMENT_TYPE_MISMATCH!>1<!>.fn()
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>fn<!>()
}
@@ -16,7 +16,7 @@ fun test(a: A, b: B) {
b.(foo)()
<!ARGUMENT_TYPE_MISMATCH!>(b.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>)()<!>
(b.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>)<!NO_VALUE_FOR_PARAMETER!>()<!>
foo(b)
(foo)(b)
@@ -8,5 +8,5 @@ fun test(identifier: SomeClass, fn: String.() -> Unit) {
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>()
<!OPERATOR_MODIFIER_REQUIRED!>identifier<!>(<!TOO_MANY_ARGUMENTS!>123<!>)
<!OPERATOR_MODIFIER_REQUIRED!>identifier<!>(<!TOO_MANY_ARGUMENTS!>1<!>, <!TOO_MANY_ARGUMENTS!>2<!>)
<!ARGUMENT_TYPE_MISMATCH!>1<!>.fn()
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>fn<!>()
}