aboutsummaryrefslogtreecommitdiff
path: root/tests/pos
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-08-17 13:42:28 +0200
committerGuillaume Martres <smarter@ubuntu.com>2016-08-17 15:37:14 -0700
commit5f598e8094c1dba3c6cf302383088f4f00626222 (patch)
treeb1df5e4a688b46265e8be112978569f3470be48a /tests/pos
parent83adc75d50e319d1d2c3e2d88b69ee4393bd3525 (diff)
downloaddotty-5f598e8094c1dba3c6cf302383088f4f00626222.tar.gz
dotty-5f598e8094c1dba3c6cf302383088f4f00626222.tar.bz2
dotty-5f598e8094c1dba3c6cf302383088f4f00626222.zip
Add clause for HKApply in TypeAssigner#avoid
Diffstat (limited to 'tests/pos')
-rw-r--r--tests/pos/tcpoly_infer_ticket474.scala27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/pos/tcpoly_infer_ticket474.scala b/tests/pos/tcpoly_infer_ticket474.scala
new file mode 100644
index 000000000..9012deb2b
--- /dev/null
+++ b/tests/pos/tcpoly_infer_ticket474.scala
@@ -0,0 +1,27 @@
+trait Builder[C[_], T] {
+ def +=(x: T): Unit
+ def finalise: C[T]
+}
+
+trait Buildable[C[_]] {
+ def builder[T]: Builder[C,T]
+}
+
+object Test {
+
+ implicit object buildableList extends Buildable[List] {
+ def builder[T] = new Builder[List,T] {
+ val buf = new scala.collection.mutable.ListBuffer[T]
+ def +=(x: T) = buf += x
+ def finalise = buf.toList
+ }
+ }
+
+ def foo[C[_],T](x: T)(implicit b: Buildable[C]): C[T] = {
+ val builder = b.builder[T]
+ builder += x
+ builder.finalise
+ }
+
+ val l: List[Int] = foo(8)
+}