Skip to content

Commit 7951895

Browse files
committed
OK.apply method to account for OK(Err(_))
1 parent 0f8749b commit 7951895

7 files changed

Lines changed: 25 additions & 5 deletions

File tree

library/src/scala/magic/Ok.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package scala.magic
22

3-
import scala.magic.runtime.Valid
3+
import scala.magic.runtime.{MaybeCase, Valid}
44
import scala.magic.compiletime.Maybe
55
import annotation.experimental
66

77
@experimental
88
object Ok:
99
inline def apply[T](x: T): Maybe[T, Nothing] = {
10-
if x == null then new Valid(null)
11-
else if x.isInstanceOf[Valid] then new Valid(x)
10+
if x == null || x.isInstanceOf[MaybeCase] then new Valid(x)
1211
else x
1312
}.asInstanceOf[Maybe[T, Nothing]]
1413

library/src/scala/magic/runtime/Fail.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ package scala.magic.runtime
33
import annotation.experimental
44

55
@experimental
6-
case class Fail[+E](elem: E)
6+
case class Fail[+E](elem: E) extends MaybeCase
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package scala.magic.runtime
2+
3+
import annotation.experimental
4+
5+
@experimental
6+
abstract class MaybeCase
7+

library/src/scala/magic/runtime/Valid.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ package scala.magic.runtime
33
import annotation.experimental
44

55
@experimental
6-
case class Valid(elem: Any)
6+
case class Valid(elem: Any) extends MaybeCase

tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ val experimentalDefinitionInLibrary = Set(
113113
"scala.magic.runtime.Fail$",
114114
"scala.magic.runtime.Valid",
115115
"scala.magic.runtime.Valid$",
116+
"scala.magic.runtime.MaybeCase",
116117
)
117118

118119

tests/run/ok-tostring.check

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Valid(null)
2+
Valid(Fail(bad))
3+
good

tests/run/ok-tostring.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//> using options -Yexplicit-nulls
2+
import language.experimental.magic
3+
import language.future
4+
import scala.magic.*
5+
6+
@main def Test =
7+
println(Ok(null))
8+
println(Ok(Err("bad")))
9+
println(Ok("good"))
10+

0 commit comments

Comments
 (0)