FE: Make synchronized suspend functions and lambdas error in 1.8

#KT-27333 Fixed
This commit is contained in:
Ilmir Usmanov
2022-04-03 02:29:24 +02:00
committed by teamcity
parent f473998e8b
commit 6e30ce2763
19 changed files with 152 additions and 75 deletions
@@ -0,0 +1,25 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
<!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!>
suspend fun foo(f: () -> Unit): Unit = f()
fun builder(c: suspend () -> Unit) {}
val a: suspend () -> Unit
get() = <!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!> {}
val b: suspend () -> Unit = <!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!> {}
val c = builder (<!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!> {})
val d = suspend <!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!> {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
fun test() {
<!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!>
suspend fun foo(f: () -> Unit): Unit = f()
val b: suspend () -> Unit = <!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!> {}
val c = builder (<!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!> {})
val d = suspend <!SYNCHRONIZED_ON_SUSPEND_WARNING!>@Synchronized<!> {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
}
@@ -0,0 +1,26 @@
// FIR_IDENTICAL
// LANGUAGE: +SynchronizedSuspendError
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
<!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!>
suspend fun foo(f: () -> Unit): Unit = f()
fun builder(c: suspend () -> Unit) {}
val a: suspend () -> Unit
get() = <!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!> {}
val b: suspend () -> Unit = <!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!> {}
val c = builder (<!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!> {})
val d = suspend <!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!> {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
fun test() {
<!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!>
suspend fun foo(f: () -> Unit): Unit = f()
val b: suspend () -> Unit = <!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!> {}
val c = builder (<!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!> {})
val d = suspend <!SYNCHRONIZED_ON_SUSPEND_ERROR!>@Synchronized<!> {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
}
@@ -1,24 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@Synchronized
suspend fun foo(f: () -> Unit): Unit = f()
fun builder(c: suspend () -> Unit) {}
val a: suspend () -> Unit
get() = @Synchronized {}
val b: suspend () -> Unit = @Synchronized {}
val c = builder (@Synchronized {})
val d = suspend @Synchronized {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
fun test() {
@Synchronized
suspend fun foo(f: () -> Unit): Unit = f()
val b: suspend () -> Unit = @Synchronized {}
val c = builder (@Synchronized {})
val d = suspend @Synchronized {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
}
@@ -1,24 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
<!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!>
suspend fun foo(f: () -> Unit): Unit = f()
fun builder(c: suspend () -> Unit) {}
val a: suspend () -> Unit
get() = <!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!> {}
val b: suspend () -> Unit = <!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!> {}
val c = builder (<!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!> {})
val d = suspend <!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!> {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
fun test() {
<!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!>
suspend fun foo(f: () -> Unit): Unit = f()
val b: suspend () -> Unit = <!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!> {}
val c = builder (<!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!> {})
val d = suspend <!SYNCHRONIZED_ON_SUSPEND!>@Synchronized<!> {}
val e = <!WRONG_ANNOTATION_TARGET!>@Synchronized<!> suspend {}
}