Report suspension point in monitor error on crossinline lambdas
#KT-27258: Fixed
This commit is contained in:
+9
@@ -15,3 +15,12 @@ inline fun monitorInFinally(a: () -> Unit, b: () -> Unit) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun withCrossinline(crossinline a: suspend () -> Unit): suspend () -> Unit {
|
||||
val c : suspend () -> Unit = {
|
||||
inlineMe {
|
||||
a()
|
||||
}
|
||||
}
|
||||
return c
|
||||
}
|
||||
+3
@@ -4,4 +4,7 @@ compiler/testData/compileKotlinAgainstCustomBinaries/suspensionPointInMonitor/so
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/suspensionPointInMonitor/source.kt:14:13: error: a suspension point at SourceKt$test$2.invokeSuspend(source.kt:17) is inside a critical section
|
||||
builder {
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/suspensionPointInMonitor/source.kt:24:25: error: a suspension point at SourceKt$test$3$invokeSuspend$$inlined$withCrossinline$2.invokeSuspend(a.kt:31) is inside a critical section
|
||||
withCrossinline {
|
||||
^
|
||||
COMPILATION_ERROR
|
||||
|
||||
+8
@@ -18,6 +18,14 @@ fun test() {
|
||||
)
|
||||
}
|
||||
|
||||
builder {
|
||||
withCrossinline {}
|
||||
|
||||
withCrossinline {
|
||||
suspensionPoint()
|
||||
}
|
||||
}
|
||||
|
||||
synchronized(lock) {
|
||||
builder {
|
||||
suspensionPoint()
|
||||
|
||||
Reference in New Issue
Block a user