Kirill Gribov
05/21/2021, 5:14 PM@JvmInline
value class ValueClassId(private val value: UUID)
class SomeService {
suspend fun outerFails(id: UUID): ValueClassId {
return inner(id)
}
suspend fun outerWorks(id: UUID) = try {
somethingTrowing()
justValueId(id)
} catch (e: RuntimeException) {
fallbackValueId(id)
}
private suspend fun inner(id: UUID) = try {
somethingTrowing()
justValueId(id)
} catch (e: RuntimeException) {
fallbackValueId(id)
}
private suspend fun justValueId(id: UUID): ValueClassId {
delay(1)
return ValueClassId(id)
}
private suspend fun fallbackValueId(id: UUID): ValueClassId {
delay(1)
return ValueClassId(id)
}
private suspend fun somethingTrowing(): Unit {
delay(1)
throw IllegalArgumentException()
}
}
fun main(): Unit = runBlocking {
val s = SomeService()
val id = UUID.randomUUID()
// works fine
s.outerWorks(id)
// Fails on: ContinuationImpl.kt:33
// val outcome = invokeSuspend(param)
// if (outcome === COROUTINE_SUSPENDED) return
s.outerFails(id)
}
wasyl
05/21/2021, 5:43 PMKirill Gribov
05/21/2021, 6:14 PMNamig Tahmazli
05/21/2021, 6:44 PMKirill Gribov
05/21/2021, 6:45 PMclass kotlin.coroutines.intrinsics.CoroutineSingletons cannot be cast to class java.lang.String
Ilmir Usmanov [JB]
05/21/2021, 11:33 PMKirill Gribov
05/22/2021, 1:23 PM