From 87b1b727692fca063882dd81fcfb219e955aa1a8 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Sun, 19 Jun 2011 21:43:53 +0000 Subject: Fixed an issue with higher kinded type inferenc... Fixed an issue with higher kinded type inference on constructors without any help from adriaan. Provisionally notched belt. Wrapped up as many tickets as I added characters of code. Closes SI-3343, SI-4018. Review by moors. --- test/files/pos/hk-infer.scala | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/files/pos/hk-infer.scala (limited to 'test/files/pos/hk-infer.scala') diff --git a/test/files/pos/hk-infer.scala b/test/files/pos/hk-infer.scala new file mode 100644 index 0000000000..a1b83bf04a --- /dev/null +++ b/test/files/pos/hk-infer.scala @@ -0,0 +1,34 @@ +object Basis { + final case class X[T](t: T) + val x = Seq(X(32)) + val y = Seq(X(true)) + val x1 = Seq(X("asdf")) + val x2 = Seq(X('d')) +} +import Basis._ + +object DoesWork { + def f2 = List(x, y, x1, x2).flatten +} + +// Testing the not giving of explicit Booper[M] arguments. +object ShouldWorkHK { + class Booper[M[_]](xs: Seq[M[_]]) extends collection.generic.SeqForwarder[M[_]] { + def underlying = xs + def BOOP(ys: Seq[M[_]]) = new Booper(xs ++ ys) + } + implicit def mkBoop[M[_]](xs: Seq[M[_]]) = new Booper(xs) + + def f1 = x BOOP y BOOP x1 BOOP x2 +} + +object DoesWorkHK { + class Booper[M[_]](xs: Seq[M[_]]) extends collection.generic.SeqForwarder[M[_]] { + def underlying = xs + def BOOP(ys: Seq[M[_]]) = new Booper[M](xs ++ ys) + } + implicit def mkBoop[M[_]](xs: Seq[M[_]]) = new Booper[M](xs) + + def f1 = x BOOP y BOOP x1 BOOP x2 +} + -- cgit v1.2.3