From e67698c9b85313b52f3272d7091c9b6e210944dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Kozak?= Date: Tue, 16 Apr 2024 14:01:11 +0200 Subject: [PATCH] Revert "Add `Opt.when` method" --- .../scala/com/avsystem/commons/misc/Opt.scala | 19 ++----------------- .../com/avsystem/commons/misc/OptTest.scala | 12 ------------ 2 files changed, 2 insertions(+), 29 deletions(-) diff --git a/core/src/main/scala/com/avsystem/commons/misc/Opt.scala b/core/src/main/scala/com/avsystem/commons/misc/Opt.scala index be6bfbb5c..2f47749ec 100644 --- a/core/src/main/scala/com/avsystem/commons/misc/Opt.scala +++ b/core/src/main/scala/com/avsystem/commons/misc/Opt.scala @@ -28,20 +28,6 @@ object Opt { def foreach[U](f: A => U): Unit = self filter p foreach f def withFilter(q: A => Boolean): WithFilter[A] = new WithFilter[A](self, x => p(x) && q(x)) } - - final class LazyOptOps[A](private val opt: () => Opt[A]) extends AnyVal { - /** When a given condition is true, evaluates the `opt` argument and returns it. - * When the condition is false, `opt` is not evaluated and `Opt.Empty` is - * returned. - */ - def when(cond: Boolean): Opt[A] = if (cond) opt() else Opt.Empty - /** Unless a given condition is true, this will evaluate the `opt` argument and - * return it. Otherwise, `opt` is not evaluated and `Opt.Empty` is returned. - */ - @inline def unless(cond: Boolean): Opt[A] = when(!cond) - } - - implicit def lazyOptOps[A](opt: => Opt[A]): LazyOptOps[A] = new LazyOptOps(() => opt) } /** @@ -55,8 +41,7 @@ object Opt { * Please be aware of that tradeoff. */ final class Opt[+A] private(private val rawValue: Any) extends AnyVal with OptBase[A] with Serializable { - - import Opt.* + import Opt._ private def value: A = rawValue.asInstanceOf[A] @@ -155,7 +140,7 @@ final class Opt[+A] private(private val rawValue: Any) extends AnyVal with OptBa if (isEmpty) Iterator.empty else Iterator.single(value) @inline def toList: List[A] = - if (isEmpty) List() else value :: Nil + if (isEmpty) List() else new ::(value, Nil) @inline def toRight[X](left: => X): Either[X, A] = if (isEmpty) Left(left) else Right(value) diff --git a/core/src/test/scala/com/avsystem/commons/misc/OptTest.scala b/core/src/test/scala/com/avsystem/commons/misc/OptTest.scala index 3db90b4a7..20e3557c6 100644 --- a/core/src/test/scala/com/avsystem/commons/misc/OptTest.scala +++ b/core/src/test/scala/com/avsystem/commons/misc/OptTest.scala @@ -66,16 +66,4 @@ class OptTest extends AnyFunSuite { val seq: Seq[Int] = Opt(5).mapOr(Nil, i => 0 until i) assert(seq == (0 until 5)) } - - test("Opt.{when, unless}") { - val opt = Opt(42) - - assert(opt.when(true) == opt) - assert(opt.when(false) == Opt.Empty) - assert(Opt(fail("Parameter should not be evaluated")).when(false) == Opt.Empty) - - assert(opt.unless(false) == opt) - assert(opt.unless(true) == Opt.Empty) - assert(Opt(fail("Parameter should not be evaluated")).unless(true) == Opt.Empty) - } }