aboutsummaryrefslogtreecommitdiff
path: root/tests/run/generic/Color.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-01-31 14:46:24 +1100
committerMartin Odersky <odersky@gmail.com>2017-02-08 19:35:58 +1100
commitfe09e0d8fe68e0b48d5e864e1de12ae5ee86077d (patch)
tree67279b95ae5e7a2f2ebd2418d3a4b12002f107ae /tests/run/generic/Color.scala
parentbc06d17ebfd7c8d6003dffe925c3cf9ebca6b1b9 (diff)
downloaddotty-fe09e0d8fe68e0b48d5e864e1de12ae5ee86077d.tar.gz
dotty-fe09e0d8fe68e0b48d5e864e1de12ae5ee86077d.tar.bz2
dotty-fe09e0d8fe68e0b48d5e864e1de12ae5ee86077d.zip
ADT and Serialization test
The test exercises all the improvements made in previous commits of this branch.
Diffstat (limited to 'tests/run/generic/Color.scala')
-rw-r--r--tests/run/generic/Color.scala30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/run/generic/Color.scala b/tests/run/generic/Color.scala
new file mode 100644
index 000000000..ed248295d
--- /dev/null
+++ b/tests/run/generic/Color.scala
@@ -0,0 +1,30 @@
+package generic
+
+import Shapes._
+
+/** enum Color {
+ * case Red
+ * case Green
+ * case Blue
+ * }
+ */
+sealed trait Color extends Enum
+
+object Color extends EnumValues[Color](3) {
+
+ private def $new(tag: Int, name: String) = new Color {
+ def enumTag = tag
+ override def toString = name
+ registerEnumValue(this)
+ }
+
+ val Red: Color = $new(0, "Red")
+ val Green: Color = $new(1, "Green")
+ val Blue: Color = $new(2, "Blue")
+
+ implicit val ColorShape: Color `shaped` EnumValue[Color] =
+ new (Color `shaped` EnumValue[Color]) {
+ def toShape(x: Color) = EnumValue(x.enumTag)
+ def fromShape(x: EnumValue[Color]) = Color.value(x.tag)
+ }
+} \ No newline at end of file