| @file:Suppress("PackageDirectoryMismatch") |
| package example |
| |
| import kotlinx.coroutines.* |
| |
| object PublicApiImplementation : CoroutineScope by CoroutineScope(CoroutineName("Example")) { |
| |
| private fun doWork(): Int { |
| error("Internal invariant failed") |
| } |
| |
| private fun asynchronousWork(): Int { |
| return doWork() + 1 |
| } |
| |
| public suspend fun awaitAsynchronousWorkInMainThread() { |
| val task = async(Dispatchers.Default) { |
| asynchronousWork() |
| } |
| |
| task.await() |
| } |
| } |
| |
| suspend fun main() { |
| // Try to switch debug mode on and off to see the difference |
| PublicApiImplementation.awaitAsynchronousWorkInMainThread() |
| } |