Calls for suspend functions imported from object should be checked in CoroutineSuspendCallChecker.
This commit is contained in:
@@ -1,13 +1,22 @@
|
||||
import Host.bar
|
||||
|
||||
object Host {
|
||||
suspend fun bar() {}
|
||||
}
|
||||
|
||||
suspend fun foo() {}
|
||||
|
||||
fun noSuspend() {
|
||||
<!ILLEGAL_SUSPEND_FUNCTION_CALL!>foo<!>()
|
||||
<!ILLEGAL_SUSPEND_FUNCTION_CALL!>bar<!>()
|
||||
}
|
||||
|
||||
class A {
|
||||
init {
|
||||
<!ILLEGAL_SUSPEND_FUNCTION_CALL!>foo<!>()
|
||||
<!ILLEGAL_SUSPEND_FUNCTION_CALL!>bar<!>()
|
||||
}
|
||||
}
|
||||
|
||||
val x = <!ILLEGAL_SUSPEND_FUNCTION_CALL!>foo<!>()
|
||||
val y = <!ILLEGAL_SUSPEND_FUNCTION_CALL!>bar<!>()
|
||||
@@ -1,6 +1,7 @@
|
||||
package
|
||||
|
||||
public val x: kotlin.Unit
|
||||
public val y: kotlin.Unit
|
||||
public suspend fun foo(): kotlin.Unit
|
||||
public fun noSuspend(): kotlin.Unit
|
||||
|
||||
@@ -10,3 +11,11 @@ public final class A {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public object Host {
|
||||
private constructor Host()
|
||||
public final suspend fun bar(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
import Host.suspendFromObject
|
||||
|
||||
suspend fun suspendHere() = 1
|
||||
suspend fun <T> another(a: T) = 1
|
||||
|
||||
object Host {
|
||||
suspend fun suspendFromObject() = 1
|
||||
}
|
||||
|
||||
fun <T> builder(c: suspend () -> Unit) { }
|
||||
|
||||
inline fun run(x: () -> Unit) {}
|
||||
@@ -15,46 +20,59 @@ fun foo() {
|
||||
var result = 1
|
||||
builder<String> {
|
||||
suspendHere()
|
||||
suspendFromObject()
|
||||
|
||||
another("")
|
||||
another(1)
|
||||
|
||||
result += suspendHere()
|
||||
result += suspendFromObject()
|
||||
|
||||
run {
|
||||
result += suspendHere()
|
||||
result += suspendFromObject()
|
||||
|
||||
run {
|
||||
suspendHere()
|
||||
suspendFromObject()
|
||||
}
|
||||
}
|
||||
|
||||
runCross {
|
||||
result += <!NON_LOCAL_SUSPENSION_POINT!>suspendHere<!>()
|
||||
result += <!NON_LOCAL_SUSPENSION_POINT!>suspendFromObject<!>()
|
||||
runCross {
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendHere<!>()
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendFromObject<!>()
|
||||
}
|
||||
}
|
||||
|
||||
noinline {
|
||||
result += <!NON_LOCAL_SUSPENSION_POINT!>suspendHere<!>()
|
||||
result += <!NON_LOCAL_SUSPENSION_POINT!>suspendFromObject<!>()
|
||||
noinline {
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendHere<!>()
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendFromObject<!>()
|
||||
}
|
||||
}
|
||||
|
||||
class A {
|
||||
fun bar() {
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendHere<!>()
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendFromObject<!>()
|
||||
}
|
||||
}
|
||||
|
||||
object : Any() {
|
||||
fun baz() {
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendHere<!>()
|
||||
<!NON_LOCAL_SUSPENSION_POINT!>suspendFromObject<!>()
|
||||
}
|
||||
}
|
||||
|
||||
builder<Int> {
|
||||
suspendHere()
|
||||
suspendFromObject()
|
||||
|
||||
another(1)
|
||||
another("")
|
||||
|
||||
@@ -7,3 +7,11 @@ public fun noinline(/*0*/ x: () -> kotlin.Unit): kotlin.Unit
|
||||
public inline fun run(/*0*/ x: () -> kotlin.Unit): kotlin.Unit
|
||||
public inline fun runCross(/*0*/ crossinline x: () -> kotlin.Unit): kotlin.Unit
|
||||
public suspend fun suspendHere(): kotlin.Int
|
||||
|
||||
public object Host {
|
||||
private constructor Host()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final suspend fun suspendFromObject(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user