FIR: initial support of suspend conversion on arguments
This commit is contained in:
committed by
Mikhail Glukhikh
parent
49679f3145
commit
6de8ba40c1
+3
-3
@@ -14,9 +14,9 @@ fun test(
|
||||
foo1 { "str" }
|
||||
foo1(f0)
|
||||
|
||||
<!INAPPLICABLE_CANDIDATE!>foo1<!>(f1)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo2<!>(f2)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo3<!>(f3)
|
||||
foo1(f1)
|
||||
foo2(f2)
|
||||
foo3(f3)
|
||||
|
||||
<!INAPPLICABLE_CANDIDATE!>foo1<!>(f2)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo1<!>(f3)
|
||||
|
||||
Vendored
+6
-6
@@ -10,21 +10,21 @@ fun <T, K> foo3(f: suspend (T) -> K): Inv2<T, K> = TODO()
|
||||
fun <I> id(e: I): I = e
|
||||
|
||||
fun test(f: (Int) -> String, g: () -> String) {
|
||||
val a0 = <!INAPPLICABLE_CANDIDATE!>foo1<!>(f)
|
||||
val a0 = foo1(f)
|
||||
a0
|
||||
|
||||
val a1 = <!INAPPLICABLE_CANDIDATE!>foo2<!>(g)
|
||||
val a1 = foo2(g)
|
||||
a1
|
||||
|
||||
val a2 = <!INAPPLICABLE_CANDIDATE!>foo3<!>(f)
|
||||
val a2 = foo3(f)
|
||||
a2
|
||||
|
||||
val a3 = <!INAPPLICABLE_CANDIDATE!>foo1<!>(id(f))
|
||||
val a3 = foo1(id(f))
|
||||
a3
|
||||
|
||||
val a4 = <!INAPPLICABLE_CANDIDATE!>foo2<!>(id(g))
|
||||
val a4 = foo2(id(g))
|
||||
a4
|
||||
|
||||
val a5 = <!INAPPLICABLE_CANDIDATE!>foo3<!>(id(f))
|
||||
val a5 = foo3(id(f))
|
||||
a5
|
||||
}
|
||||
|
||||
+1
-1
@@ -9,6 +9,6 @@ fun foo(s: SuspendRunnable) {}
|
||||
|
||||
fun test(f: () -> Unit) {
|
||||
foo { }
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(f)
|
||||
foo(f)
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -14,6 +14,6 @@ fun test1() {
|
||||
|
||||
// candidate without suspend conversions is more specific
|
||||
fun test2(f: () -> Int, g: suspend () -> Int) {
|
||||
foo(f)
|
||||
<!AMBIGUITY!>foo<!>(f)
|
||||
foo(g)
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
// !LANGUAGE: +SuspendConversion
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun foo(f: () -> String, g: suspend () -> String, h: suspend () -> String) {}
|
||||
|
||||
fun test(f: () -> String, g: suspend () -> String) {
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(f, f, f)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(f, { "str" }, f)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(f, f, g)
|
||||
foo(f, g, g)
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +SuspendConversion
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -12,7 +12,7 @@ object Test1 {
|
||||
fun call(r: SuspendRunnable) {}
|
||||
|
||||
fun bar(f: () -> Unit) {
|
||||
<!DEBUG_INFO_CALL("fqName: Test1.call; typeCall: function")!>call(f)<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Test1.Scope.call; typeCall: function")!>call(f)<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ object Test2 {
|
||||
fun call(r: SuspendRunnable) {}
|
||||
|
||||
fun bar(f: () -> Unit) {
|
||||
<!DEBUG_INFO_CALL("fqName: Test2.call; typeCall: function")!>call(f)<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Test2.Scope.call; typeCall: function")!>call(f)<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -8,7 +8,7 @@ object Test1 {
|
||||
fun foo(f: suspend () -> Unit) {}
|
||||
|
||||
fun test(g: () -> Unit) {
|
||||
<!DEBUG_INFO_CALL("fqName: Test1.foo; typeCall: function")!>foo(g)<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Test1.Scope.foo; typeCall: function")!>foo(g)<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -16,9 +16,9 @@ fun test(
|
||||
foo1 { "str" }
|
||||
foo1(f0)
|
||||
|
||||
<!INAPPLICABLE_CANDIDATE!>foo1<!>(f1)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo2<!>(f2)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo3<!>(f3)
|
||||
foo1(f1)
|
||||
foo2(f2)
|
||||
foo3(f3)
|
||||
|
||||
foo1(::bar)
|
||||
|
||||
|
||||
Vendored
-20
@@ -1,20 +0,0 @@
|
||||
// !LANGUAGE: +SuspendConversion
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun useSuspendVararg(vararg sfn: suspend () -> Unit) {}
|
||||
|
||||
fun testSuspendConversionInVarargElementsSome(
|
||||
sf1: suspend () -> Unit,
|
||||
f2: () -> Unit,
|
||||
sf3: suspend () -> Unit
|
||||
) {
|
||||
<!INAPPLICABLE_CANDIDATE!>useSuspendVararg<!>(sf1, f2, sf3)
|
||||
}
|
||||
|
||||
fun testSuspendConversionInVarargElementsAll(
|
||||
f1: () -> Unit,
|
||||
f2: () -> Unit,
|
||||
f3: () -> Unit
|
||||
) {
|
||||
<!INAPPLICABLE_CANDIDATE!>useSuspendVararg<!>(f1, f2, f3)
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +SuspendConversion
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
|
||||
Reference in New Issue
Block a user