From 7ecae27b3d52a96b3af552d5aef16c85a933fea7 Mon Sep 17 00:00:00 2001 From: xuwei-k <6b656e6a69@gmail.com> Date: Wed, 23 Oct 2024 13:29:30 +0900 Subject: [PATCH] use extension in OptionSyntax --- main/src/main/scala/sbt/OptionSyntax.scala | 24 +++++++--------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/main/src/main/scala/sbt/OptionSyntax.scala b/main/src/main/scala/sbt/OptionSyntax.scala index eac941392..7da4b7e0c 100644 --- a/main/src/main/scala/sbt/OptionSyntax.scala +++ b/main/src/main/scala/sbt/OptionSyntax.scala @@ -12,38 +12,28 @@ import java.util.Optional // Todo: port this back to Zinc in place of JavaInterfaceUtil. trait OptionSyntax { - import OptionSyntax._ - implicit def sbtOptionSyntaxRichOptional[A](optional: Optional[A]): RichOptional[A] = - new RichOptional[A](optional) - - implicit def sbtOptionSyntaxRichOption[A](option: Option[A]): RichOption[A] = - new RichOption[A](option) - - implicit def sbtOptionSyntaxOptionIdOps[A](a: A): OptionIdOps[A] = - new OptionIdOps[A](a) - - final def none[A]: Option[A] = None -} - -object OptionSyntax extends OptionSyntax { /** Injects some method. */ - final class OptionIdOps[A](val a: A) extends AnyVal { + extension [A](a: A) { def some: Option[A] = Some(a) } /** Injects asScala method. */ - final class RichOptional[A](val optional: Optional[A]) extends AnyVal { + extension [A](optional: Optional[A]) { def asScala: Option[A] = if (!optional.isPresent) None else Some(optional.get()) } /** Injects asJava method. */ - final class RichOption[A](val option: Option[A]) extends AnyVal { + extension [A](option: Option[A]) { def asJava: Optional[A] = option match { case Some(value) => Optional.of(value) case None => Optional.empty[A] } } + + final def none[A]: Option[A] = None } + +object OptionSyntax extends OptionSyntax