Skip to content

Commit 0fe4020

Browse files
authored
Merge pull request #1271 from joroKr21/serializable-enum
Make enum example serializable
2 parents 268526d + 2667337 commit 0fe4020

File tree

1 file changed

+7
-3
lines changed
  • examples/src/main/scala/shapeless/examples

1 file changed

+7
-3
lines changed

examples/src/main/scala/shapeless/examples/enum.scala

+7-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@ object ScalaEnumDemo /*extends App*/ {
4949
//
5050
object ShapelessEnumDemo extends App {
5151
// ADT as an enumeration. Barely any more boilerplate ...
52-
sealed trait WeekDay
52+
sealed abstract class WeekDay(val ordinal: Int) extends Serializable
5353
object WeekDay {
54-
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = new WeekDay {}
54+
private var ordinal = 0
55+
val Mon, Tue, Wed, Thu, Fri, Sat, Sun =
56+
try new WeekDay(ordinal) {}
57+
finally ordinal += 1
5558
val values: Set[WeekDay] = Values
5659
}
5760

@@ -68,7 +71,8 @@ object ShapelessEnumDemo extends App {
6871
case _ => false // compile time non-exhaustive match warning/error without this case
6972
}
7073

71-
assert(!isWeekend(Mon)) //
74+
assert(!isWeekend(Mon))
75+
assert(values.size == values.map(_.ordinal).size)
7276
}
7377

7478
// Infrastructure for the above. Original version due to Travis Brown,

0 commit comments

Comments
 (0)