FIR resolve: add partial support of extension lambda calls

Here we introduce ONLY_IMPLICIT_RECEIVER tower level
to support extension lambda calls on local variables,
and soften extension receiver checks to make such extensions visible & applicable.
Also here we try to map arguments twice for functional types
This commit is contained in:
Mikhail Glukhikh
2019-12-23 15:56:50 +03:00
parent 49e94f1ee3
commit de50f8aef3
65 changed files with 292 additions and 144 deletions
@@ -9,8 +9,8 @@ enum class E {
val foo: Any.() -> Unit = {}
fun f1() = E.FIRST.<!UNRESOLVED_REFERENCE!>foo<!>()
fun f2() = E.FIRST.(<!UNRESOLVED_REFERENCE!>foo<!>)()
fun f3() = E.SECOND.<!UNRESOLVED_REFERENCE!>foo<!>()
fun f4() = E.SECOND.(<!UNRESOLVED_REFERENCE!>foo<!>)()
fun f1() = E.FIRST.foo()
fun f2() = E.FIRST.(foo)()
fun f3() = E.SECOND.foo()
fun f4() = E.SECOND.(foo)()
fun f5() = E.SECOND.A()
@@ -9,8 +9,8 @@ enum class E {
val foo: Any.() -> Unit = {}
fun f1() = E.FIRST.<!UNRESOLVED_REFERENCE!>foo<!>()
fun f2() = E.FIRST.(<!UNRESOLVED_REFERENCE!>foo<!>)()
fun f3() = E.SECOND.<!UNRESOLVED_REFERENCE!>foo<!>()
fun f4() = E.SECOND.(<!UNRESOLVED_REFERENCE!>foo<!>)()
fun f1() = E.FIRST.foo()
fun f2() = E.FIRST.(foo)()
fun f3() = E.SECOND.foo()
fun f4() = E.SECOND.(foo)()
fun f5() = E.SECOND.A()