summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-05-31 03:55:46 -0700
committerPaul Phillips <paulp@improving.org>2013-05-31 03:55:46 -0700
commit8b9269313637ae3e65f6048d4b1615d1e64963d9 (patch)
treee696606c93113b60a7ae36f136da9dc5b2947c24 /src/reflect
parent1c6a0cf75592c201e27a6e11140c6da87de67123 (diff)
downloadscala-8b9269313637ae3e65f6048d4b1615d1e64963d9.tar.gz
scala-8b9269313637ae3e65f6048d4b1615d1e64963d9.tar.bz2
scala-8b9269313637ae3e65f6048d4b1615d1e64963d9.zip
Add a TriState value class.
Sometimes true and false aren't enough.
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/util/TriState.scala26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/util/TriState.scala b/src/reflect/scala/reflect/internal/util/TriState.scala
new file mode 100644
index 0000000000..c7a35d4637
--- /dev/null
+++ b/src/reflect/scala/reflect/internal/util/TriState.scala
@@ -0,0 +1,26 @@
+package scala
+package reflect
+package internal
+package util
+
+import TriState._
+
+/** A simple true/false/unknown value, for those days when
+ * true and false don't quite partition the space.
+ */
+final class TriState private (val value: Int) extends AnyVal {
+ def isKnown = this != Unknown
+ def booleanValue = this match {
+ case True => true
+ case False => false
+ case _ => sys.error("Not a Boolean value")
+ }
+}
+
+object TriState {
+ implicit def booleanToTriState(b: Boolean): TriState = if (b) True else False
+
+ val Unknown = new TriState(-1)
+ val False = new TriState(0)
+ val True = new TriState(1)
+}