aboutsummaryrefslogtreecommitdiff
path: root/tests/pickling/i94-nada.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-03-08 22:02:22 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-18 11:16:37 +0100
commit5962a931c83622ce065bc1ce9add049ade89bfcf (patch)
tree24851bbc76f1ca537456715c44a9f866a5c00668 /tests/pickling/i94-nada.scala
parent19bfc0c6c9be9c4c3fdca55480e01e980a493b42 (diff)
downloaddotty-5962a931c83622ce065bc1ce9add049ade89bfcf.tar.gz
dotty-5962a931c83622ce065bc1ce9add049ade89bfcf.tar.bz2
dotty-5962a931c83622ce065bc1ce9add049ade89bfcf.zip
Pickling test reorg
Move pickling tests into separate top-level test directory. That way they are not needlessly pos-tested before. Also, disable core tests for now - after rebasing we get a stale symbol error. Need to investigate that.
Diffstat (limited to 'tests/pickling/i94-nada.scala')
-rw-r--r--tests/pickling/i94-nada.scala45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/pickling/i94-nada.scala b/tests/pickling/i94-nada.scala
new file mode 100644
index 000000000..ce8dc98ad
--- /dev/null
+++ b/tests/pickling/i94-nada.scala
@@ -0,0 +1,45 @@
+package i94
+
+import scala.language.higherKinds
+
+trait Base {
+ type Rep[T]
+}
+
+trait BaseExp extends Base {
+ type Rep[T] = Exp[T]
+ case class Exp[T](v: T)
+}
+
+trait BaseStr extends Base {
+ type Rep[T] = String
+}
+
+trait BaseDirect extends Base {
+ type Rep[T] = T
+}
+
+trait Test1 {
+ trait Monad[X] {
+ def x: X
+ }
+ sealed abstract class Either[A,B]
+ case class Left[A,B](x: A) extends Either[A,B] with Monad[A]
+ case class Right[A,B](x: B) extends Either[A,B] with Monad[B]
+ def flatMap[X,Y,M[X]<:Monad[X]](m: M[X], f: X => M[Y]): M[Y] = f(m.x)
+ println(flatMap(Left(1), {x: Int => Left(x)}))
+}
+trait Test2 {
+ trait Monad[X] {
+ def x: X
+ }
+ sealed abstract class Either[A,B]
+ case class Left[A,B](x: A) extends Either[A,B] with Monad[A]
+ case class Right[A,B](x: B) extends Either[A,B] with Monad[B]
+ def flatMap[X,Y,M[X]](m: M[X], f: X => M[Y]): M[Y]
+ println(flatMap(Left(1), {x: Int => Left(x)}))
+}
+trait Test3 {
+ def flatMap[X,Y,M[X]](m: M[X], f: X => M[Y]): M[Y]
+ println(flatMap(Some(1), {x: Int => Some(x)}))
+}