JS: allow to call suspend function from any position within another suspend function

This commit is contained in:
Denis Zharkov
2017-01-13 19:13:34 +03:00
parent 1f0d0028b2
commit 2fcc2bbae0
13 changed files with 202 additions and 87 deletions
+9 -5
View File
@@ -126,11 +126,13 @@ internal abstract class CoroutineImpl(private val resultContinuation: Continuati
}
override fun resume(data: Any?) {
this.result = data
result = data
try {
val result = doResume()
result = doResume()
if (result != SUSPENDED_MARKER) {
resultContinuation.resume(result)
val data = result
result = SUSPENDED_MARKER
resultContinuation.resume(data)
}
}
catch (e: Throwable) {
@@ -142,9 +144,11 @@ internal abstract class CoroutineImpl(private val resultContinuation: Continuati
state = exceptionState
this.exception = exception
try {
val result = doResume()
result = doResume()
if (result != SUSPENDED_MARKER) {
resultContinuation.resume(result)
val data = result
result = SUSPENDED_MARKER
resultContinuation.resume(data)
}
}
catch (e: Throwable) {