diff options
author | Martin Odersky <odersky@gmail.com> | 2012-10-30 17:34:15 +0100 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-10-30 13:36:45 -0700 |
commit | fb6e68713060e7904a7d93012470a946ca7e2375 (patch) | |
tree | 39da3f53036e17252ab3f7a62f329fba14af44a4 /test/files/pos | |
parent | 2c554249fd8e99286134b217027b6e3cb2c92d77 (diff) | |
download | scala-fb6e68713060e7904a7d93012470a946ca7e2375.tar.gz scala-fb6e68713060e7904a7d93012470a946ca7e2375.tar.bz2 scala-fb6e68713060e7904a7d93012470a946ca7e2375.zip |
SI-6556 no assert for surprising ctor result type
Previous fix to value classes uncovered some questionable cases in the backend where result types of constructor signatures are surprising. It's not a big deal because these types will be ignored afterwards anyway. But
the method uncovered some questionable situations which we should follow up on. However, breaking 2.9 code because of this is way too harsh. That's why the asserts were converted to warnings.
review by @paulp, @adriaanm
Diffstat (limited to 'test/files/pos')
-rw-r--r-- | test/files/pos/t6556.scala | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/files/pos/t6556.scala b/test/files/pos/t6556.scala new file mode 100644 index 0000000000..e1a6f49b86 --- /dev/null +++ b/test/files/pos/t6556.scala @@ -0,0 +1,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) +} |