Skip to content

Commit

Permalink
Fix missing unbox state in native runBlocking (Kotlin#2091)
Browse files Browse the repository at this point in the history
  • Loading branch information
qwwdfsad committed Jun 16, 2020
1 parent 4b16e1b commit 68360e0
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
2 changes: 1 addition & 1 deletion kotlinx-coroutines-core/native/src/Builders.kt
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ private class BlockingCoroutine<T>(
eventLoop?.decrementUseCount()
}
// now return result
val state = state
val state = state.unboxState()
(state as? CompletedExceptionally)?.let { throw it.cause }
state as T
}
Expand Down
18 changes: 18 additions & 0 deletions kotlinx-coroutines-core/native/test/RunBlockingTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/

package kotlinx.coroutines
import kotlin.test.*

class RunBlockingTest : TestBase() {

@Test
fun testIncompleteState() {
val handle = runBlocking {
coroutineContext[Job]!!.invokeOnCompletion { }
}

handle.dispose()
}
}

0 comments on commit 68360e0

Please sign in to comment.