diff options
Diffstat (limited to 'test/pending/pos/t1756.scala')
-rw-r--r-- | test/pending/pos/t1756.scala | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/pending/pos/t1756.scala b/test/pending/pos/t1756.scala new file mode 100644 index 0000000000..c22d5509e1 --- /dev/null +++ b/test/pending/pos/t1756.scala @@ -0,0 +1,30 @@ +trait Ring[T <: Ring[T]] { + def +(that: T): T + def *(that: T): T +} + +class A extends Ring[A] { + def +(that: A) = new A + def *(that: A) = new A +} + +class Poly[C <: Ring[C]](val c: C) extends Ring[Poly[C]] { + def +(that: Poly[C]) = new Poly(this.c+that.c) + def *(that: Poly[C]) = new Poly(this.c*that.c) +} + +implicit def coef2poly[C <: Ring[C]](c: C) = new Poly(c) + +val a = new A +val x = new Poly(new A) + +x+a // works +a+x // works + +val y = new Poly(new Poly(new A)) + +x+y*x // works +x*y+x // works +y*x+x // works + +x+x*y |