diff options
author | Martin Odersky <odersky@gmail.com> | 2009-10-28 14:41:00 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-10-28 14:41:00 +0000 |
commit | 0ce248ef65575dce910c82e5714d808851557669 (patch) | |
tree | 289a451fe6a621cd4fbc7345f1ec3094c3e819d2 /src/library | |
parent | cf53536f9e1b668e9e05c280db84ef2eb502765c (diff) | |
download | scala-0ce248ef65575dce910c82e5714d808851557669.tar.gz scala-0ce248ef65575dce910c82e5714d808851557669.tar.bz2 scala-0ce248ef65575dce910c82e5714d808851557669.zip |
Fixed #1342.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/collection/TraversableViewLike.scala | 7 | ||||
-rw-r--r-- | src/library/scala/collection/immutable/Range.scala | 18 |
2 files changed, 21 insertions, 4 deletions
diff --git a/src/library/scala/collection/TraversableViewLike.scala b/src/library/scala/collection/TraversableViewLike.scala index 2f33776b74..8177658026 100644 --- a/src/library/scala/collection/TraversableViewLike.scala +++ b/src/library/scala/collection/TraversableViewLike.scala @@ -145,16 +145,15 @@ self => override def ++[B >: A, That](that: Traversable[B])(implicit bf: CanBuildFrom[This, B, That]): That = { newAppended(that).asInstanceOf[That] -// was: val b = bf(repr) -// if (b.isInstanceOf[NoBuilder[_]]) newAppended(that).asInstanceOf[That] -// else super.++[B, That](that)(bf) +// was: if (bf.isInstanceOf[ByPassCanBuildFrom]) newAppended(that).asInstanceOf[That] +// else super.++[B, That](that)(bf) } override def ++[B >: A, That](that: Iterator[B])(implicit bf: CanBuildFrom[This, B, That]): That = ++[B, That](that.toStream) override def map[B, That](f: A => B)(implicit bf: CanBuildFrom[This, B, That]): That = { newMapped(f).asInstanceOf[That] -// was: val b = bf(repr) +// val b = bf(repr) // if (b.isInstanceOf[NoBuilder[_]]) newMapped(f).asInstanceOf[That] // else super.map[B, That](f)(bf) } diff --git a/src/library/scala/collection/immutable/Range.scala b/src/library/scala/collection/immutable/Range.scala index 54a871decf..18b457e090 100644 --- a/src/library/scala/collection/immutable/Range.scala +++ b/src/library/scala/collection/immutable/Range.scala @@ -101,6 +101,9 @@ class Range(val start: Int, val end: Int, val step: Int) extends IndexedSeq[Int] final override def reverse: Range = new Range.Inclusive(last, start, -step) + /** Make range inclusive. + * @pre if (step > 0) end != MaxInt else end != MinInt + */ def inclusive = new Range.Inclusive(start, end, step) def contains(x: Int): Boolean = @@ -136,9 +139,24 @@ object Range { override protected def copy(start: Int, end: Int, step: Int): Range = new Inclusive(start, end, step) } + /** Make a range from `start` until `end` (exclusive) with step value 1. + */ def apply(start: Int, end: Int, step: Int): Range = new Range(start, end, step) + + /** Make an range from `start` to `end` inclusive with step value 1. + * @pre end != MaxInt + */ def apply(start: Int, end: Int): Range with ByOne = new Range(start, end, 1) with ByOne + + /** Make an inclusive range from start to end with given step value. + * @pre step != 0 + * @pre if (step > 0) end != MaxInt else end != MinInt + */ def inclusive(start: Int, end: Int, step: Int): Range.Inclusive = new Inclusive(start, end, step) + + /** Make an inclusive range from start to end with step value 1. + * @pre end != MaxInt + */ def inclusive(start: Int, end: Int): Range.Inclusive with ByOne = new Inclusive(start, end, 1) with ByOne trait ByOne extends Range { |