From 2b40e0578f17385e81730cfb6722f15c5904acf3 Mon Sep 17 00:00:00 2001 From: kageru Date: Wed, 22 Jul 2020 13:52:20 +0200 Subject: [PATCH] add logging for unwrap operations --- .../kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt b/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt index 10a22d8..95baaa3 100644 --- a/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt +++ b/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt @@ -5,13 +5,17 @@ import arrow.core.Either import arrow.core.Tuple3 import arrow.core.getOrElse import arrow.typeclasses.Functor +import moe.kageru.kagebot.Log fun Either.on(op: (R) -> Unit): Either { this.map { op(it) } return this } -fun Either<*, T>.unwrap(): T = getOrElse { error("Attempted to unwrap Either.left") } +fun Either<*, T>.unwrap(): T = getOrElse { + Log.warn("Attempted to unwrap $this") + error("Attempted to unwrap Either.left") +} inline fun Tuple3.mapFirst(AP: Functor, op: (A) -> Kind) = let { (a, b, c) -> AP.run { op(a).map { Tuple3(it, b, c) } }