diff options
author | Martin Odersky <odersky@gmail.com> | 2017-01-31 17:15:13 +1100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-02-08 19:35:58 +1100 |
commit | 56d32fa7bd548870c8382824fe748c5c5fde1d27 (patch) | |
tree | 1b8740978f51f75ba7d6dc25e00a17734e189437 /tests | |
parent | fe09e0d8fe68e0b48d5e864e1de12ae5ee86077d (diff) | |
download | dotty-56d32fa7bd548870c8382824fe748c5c5fde1d27.tar.gz dotty-56d32fa7bd548870c8382824fe748c5c5fde1d27.tar.bz2 dotty-56d32fa7bd548870c8382824fe748c5c5fde1d27.zip |
Add to test case
Diffstat (limited to 'tests')
-rw-r--r-- | tests/run/generic/SearchResult.scala | 9 | ||||
-rw-r--r-- | tests/run/generic/Test.scala | 16 |
2 files changed, 20 insertions, 5 deletions
diff --git a/tests/run/generic/SearchResult.scala b/tests/run/generic/SearchResult.scala index be8ebd15d..1c86d1b4f 100644 --- a/tests/run/generic/SearchResult.scala +++ b/tests/run/generic/SearchResult.scala @@ -11,7 +11,7 @@ import Shapes._ */ sealed trait SearchResult extends Enum -object SearchResult extends EnumValues[SearchResult](2) { +object SearchResult extends EnumValues[SearchResult](3) { private def $new(tag: Int, name: String) = new SearchResult { def enumTag = tag @@ -46,9 +46,10 @@ object SearchResult extends EnumValues[SearchResult](2) { } } - implicit def SearchResultShape: - SearchResult `shaped` Sum[Success, Sum[Ambiguous, EnumValue[SearchResult]]] = - new (SearchResult `shaped` Sum[Success, Sum[Ambiguous, EnumValue[SearchResult]]]) { + type Shape = Sum[Success, Sum[Ambiguous, EnumValue[SearchResult]]] + + implicit def SearchResultShape: SearchResult `unfolds` Shape = + new (SearchResult `shaped` Shape) { def toShape(x: SearchResult) = x match { case x: Success => Fst(x) case x: Ambiguous => Snd(Fst(x)) diff --git a/tests/run/generic/Test.scala b/tests/run/generic/Test.scala index 1431d1185..ac0dc4d5a 100644 --- a/tests/run/generic/Test.scala +++ b/tests/run/generic/Test.scala @@ -3,11 +3,12 @@ import Tree._ import List._ import java.io._ import Shapes._ +import SearchResult._ object Test { import Serialization._ - private var lCount, tCount = 0 + private var lCount, tCount, sCount = 0 // ------- Code that will eventually be produced by macros ------------- @@ -29,6 +30,11 @@ object Test { implicit lazy val tsInt: Serializable[Tree[Int]] = TreeSerializable[Int] implicit lazy val tsBoolean: Serializable[Tree[Boolean]] = TreeSerializable[Boolean] + implicit lazy val SearchResultSerializable: Serializable[SearchResult] = { + sCount += 1 + RecSerializable[SearchResult, SearchResult.Shape] + } + // ------- Test code -------------------------------------------------------- /** Serialize data, then deserialize it back and check that it is the same. */ @@ -49,10 +55,18 @@ object Test { val data2 = If(IsZero(Pred(Succ(Zero))), Succ(Succ(Zero)), Pred(Pred(Zero))) + val data3 = Cons(Color.Red, Cons(Color.Green, Cons(Color.Blue, Nil))) + + val data4 = Ambiguous(Success(Color.Green), Diverging) + def main(args: Array[String]) = { sds(data1) assert(lCount == 1, lCount) sds(data2) assert(tCount == 2, tCount) + sds(data3) + assert(lCount == 2, lCount) + sds(data4) + assert(sCount == 1, sCount) } }
\ No newline at end of file |