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:
@@ -4,7 +4,7 @@ package a
|
||||
import java.util.HashMap
|
||||
|
||||
private fun <T> test(value: T, extf: String.(value: T)->Unit) {
|
||||
"".<!UNRESOLVED_REFERENCE!>extf<!>(value)
|
||||
"".extf(value)
|
||||
}
|
||||
|
||||
fun main() {
|
||||
|
||||
@@ -4,7 +4,7 @@ package kt2514
|
||||
//+JDK
|
||||
import java.io.Closeable
|
||||
|
||||
fun <T> Thread.use(block: Thread.() -> T): T = <!INAPPLICABLE_CANDIDATE!>block<!>()
|
||||
fun <T> Thread.use(block: Thread.() -> T): T = block()
|
||||
|
||||
fun <T: Closeable, R> T.use(block: (T)-> R) : R = block(this)
|
||||
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ interface Closeable {
|
||||
class C : Closeable
|
||||
|
||||
public inline fun <T: Closeable, R> use(t: T, block: T.(T)-> R) : R {
|
||||
return t.<!UNRESOLVED_REFERENCE!>block<!>(t)
|
||||
return t.block(t)
|
||||
}
|
||||
|
||||
fun test() {
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ interface Closeable {
|
||||
class C : Closeable
|
||||
|
||||
public inline fun <T: Closeable, R> T.use(block: T.()-> R) : R {
|
||||
return this.<!UNRESOLVED_REFERENCE!>block<!>()
|
||||
return this.block()
|
||||
}
|
||||
|
||||
fun test() {
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ fun Int.test(f: String.(Int) -> Unit) {
|
||||
f("", 0)
|
||||
<!INAPPLICABLE_CANDIDATE!>f<!>("")
|
||||
with("") {
|
||||
<!INAPPLICABLE_CANDIDATE!>f<!>(0)
|
||||
f(0)
|
||||
<!INAPPLICABLE_CANDIDATE!>f<!>(0.0)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user