Forbid @Synchronized annotation on suspend functions

and lambdas. With warning for now.
 #KT-27333
This commit is contained in:
Ilmir Usmanov
2021-08-25 17:53:48 +02:00
parent 97176b5d60
commit 92fac304e7
13 changed files with 127 additions and 31 deletions
@@ -0,0 +1,24 @@
// !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 {}
}
@@ -0,0 +1,24 @@
// !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 {}
}