summaryrefslogtreecommitdiff
path: root/test/files/pos/hk-infer.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-06-19 21:43:53 +0000
committerPaul Phillips <paulp@improving.org>2011-06-19 21:43:53 +0000
commit87b1b727692fca063882dd81fcfb219e955aa1a8 (patch)
treea46487ba40998e13690758bc9e3fa9dc0698b162 /test/files/pos/hk-infer.scala
parent3299ee0046fd920c3c6bfc386c73685059ba13ba (diff)
downloadscala-87b1b727692fca063882dd81fcfb219e955aa1a8.tar.gz
scala-87b1b727692fca063882dd81fcfb219e955aa1a8.tar.bz2
scala-87b1b727692fca063882dd81fcfb219e955aa1a8.zip
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.
Diffstat (limited to 'test/files/pos/hk-infer.scala')
-rw-r--r--test/files/pos/hk-infer.scala34
1 files changed, 34 insertions, 0 deletions
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
+}
+