FIR: introduce builtin suspend related diagnostics

This commit is contained in:
Mikhail Glukhikh
2021-07-26 14:44:28 +03:00
committed by teamcityserver
parent 391c4db87c
commit 229dfd3f5f
14 changed files with 113 additions and 215 deletions
@@ -1,76 +0,0 @@
// !LANGUAGE: +ReleaseCoroutines
// SKIP_TXT
fun <R> suspend(block: suspend () -> R): suspend () -> R = block
class A {
infix fun <R> suspend(block: suspend () -> R): suspend () -> R = block
}
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class Ann
fun bar() {
suspend {
println()
}
@Ann suspend {
println()
}
suspend @Ann {
println()
}
suspend() {
println()
}
suspend({ println() })
suspend<Unit> {
println()
}
val w: (suspend () -> Int) -> Any? = ::suspend
A().suspend {
println()
}
A().suspend() {
println()
}
A().suspend({ println() })
A().suspend<Unit> {
println()
}
with(A()) {
suspend {
println()
}
suspend() {
println()
}
suspend({ println() })
suspend<Unit> {
println()
}
}
A() suspend {
println()
}
A() suspend ({
println()
})
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ReleaseCoroutines
// SKIP_TXT
@@ -1,84 +0,0 @@
// !LANGUAGE: +ReleaseCoroutines
// SKIP_TXT
fun <R> suspend(block: R) = block
class A {
infix fun <R> suspend(block: R) = block
}
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class Ann
fun bar() {
suspend {
println()
}
@Ann suspend {
println()
}
suspend @Ann {
println()
}
suspend() {
println()
}
suspend({ println() })
suspend<suspend () -> Unit> {
println()
}
suspend<Nothing?>(null)
val w: (Any?) -> Any? = ::suspend
A().suspend {
println()
}
A().suspend() {
println()
}
A().suspend({ println() })
A().suspend<suspend () -> Unit> {
println()
}
A().suspend<Nothing?>(null)
with(A()) {
suspend {
println()
}
suspend() {
println()
}
suspend({ println() })
suspend<suspend () -> Unit> {
println()
}
suspend<Nothing?>(null)
}
A() suspend {
println()
}
A() suspend ({
println()
})
A() suspend ""
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ReleaseCoroutines
// SKIP_TXT
@@ -1,45 +0,0 @@
// !LANGUAGE: +ReleaseCoroutines
// SKIP_TXT
fun bar() {
suspend {
println()
}
@Ann suspend {
println()
}
suspend @Ann {
println()
}
kotlin.suspend {
}
suspend() {
println()
}
suspend({ println() })
suspend<Unit> {
println()
}
val w: (suspend () -> Int) -> Any? = ::suspend
}
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class Ann
fun main(suspend: WLambdaInvoke) {
suspend {}
}
class WLambdaInvoke {
operator fun invoke(l: () -> Unit) {}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ReleaseCoroutines
// SKIP_TXT
@@ -8,23 +8,23 @@ fun bar() {
println()
}
kotlin.suspend {
kotlin.<!NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND!>suspend<!> {
}
suspendLambda {
<!NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND!>suspendLambda<!> {
println()
}
suspendLambda() {
<!NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND!>suspendLambda<!>() {
println()
}
suspendLambda({ println() })
<!NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND!>suspendLambda<!>({ println() })
suspendLambda<Unit> {
<!NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND!>suspendLambda<!><Unit> {
println()
}
val w: (suspend () -> Int) -> Any? = ::suspendLambda
val w: (suspend () -> Int) -> Any? = ::<!NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND!>suspendLambda<!>
}