summaryrefslogtreecommitdiff
path: root/test/files/pos/t6556.scala
blob: e1a6f49b8614b77bec584558a8b5e757274ea2d8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package nl.ndervorst.commons.scalapimps

trait Adapter[X] {self =>
  type This = self.type
  val adaptee: X
  val adapt: This = self
}

object Adapter {
  implicit def adaptee[Adaptee](adapter: Adapter[Adaptee]) = adapter.adaptee
}



object IterableW {
  def zipMerge[E](it1: Iterable[E], it2: Iterable[E])(implicit o: Ordering[E]): Iterable[(Option[E], Option[E])] = null
}


class Series[X: Ordering, Y](val adaptee: Iterable[(X, Y)]) extends Adapter[Iterable[(X, Y)]] {
  val order = implicitly[Ordering[X]]
  def zipMerge(other: Series[X, Y]): Series[X, (Option[Y], Option[Y])] = IterableW.zipMerge(this, other)(new Ordering[(X, Y)] {
    def compare(xy1: (X, Y), xy2: (X, Y)) = order.compare(xy1._1, xy2._1)
  }).map {
    case _ => null
  }
}


object Series {
  implicit def wrap[X: Ordering, Y](itble: Iterable[(X, Y)]): Series[X, Y] = new Series(itble)
}