aboutsummaryrefslogtreecommitdiff
path: root/tests/run/generic
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-01-31 17:15:13 +1100
committerMartin Odersky <odersky@gmail.com>2017-02-08 19:35:58 +1100
commit56d32fa7bd548870c8382824fe748c5c5fde1d27 (patch)
tree1b8740978f51f75ba7d6dc25e00a17734e189437 /tests/run/generic
parentfe09e0d8fe68e0b48d5e864e1de12ae5ee86077d (diff)
downloaddotty-56d32fa7bd548870c8382824fe748c5c5fde1d27.tar.gz
dotty-56d32fa7bd548870c8382824fe748c5c5fde1d27.tar.bz2
dotty-56d32fa7bd548870c8382824fe748c5c5fde1d27.zip
Add to test case
Diffstat (limited to 'tests/run/generic')
-rw-r--r--tests/run/generic/SearchResult.scala9
-rw-r--r--tests/run/generic/Test.scala16
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