summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-11-26 23:10:24 +0100
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-11-26 23:10:24 +0100
commit7a450a0fd4298f8b8ac2de241ffdb3fcf1b2cae5 (patch)
treef9e4e53b09c861773c95a20d47e78bfb9697605e /src
parent84d65a8776acb5f10ef4705c752d4e55b0250577 (diff)
parent1620b8cf772f0c4371220e05c54a3e3c5ccab349 (diff)
downloadscala-7a450a0fd4298f8b8ac2de241ffdb3fcf1b2cae5.tar.gz
scala-7a450a0fd4298f8b8ac2de241ffdb3fcf1b2cae5.tar.bz2
scala-7a450a0fd4298f8b8ac2de241ffdb3fcf1b2cae5.zip
Merge pull request #4156 from Ichoran/issue/8819
SI-8819 Range slice does not return a Range
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/immutable/Range.scala19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/library/scala/collection/immutable/Range.scala b/src/library/scala/collection/immutable/Range.scala
index 720dfeed59..9fa877055f 100644
--- a/src/library/scala/collection/immutable/Range.scala
+++ b/src/library/scala/collection/immutable/Range.scala
@@ -196,7 +196,24 @@ extends scala.collection.AbstractSeq[Int]
copy(locationAfterN(n), end, step)
}
)
-
+
+ /** Creates a new range containing the elements starting at `from` up to but not including `until`.
+ *
+ * $doesNotUseBuilders
+ *
+ * @param from the element at which to start
+ * @param until the element at which to end (not included in the range)
+ * @return a new range consisting of a contiguous interval of values in the old range
+ */
+ override def slice(from: Int, until: Int): Range =
+ if (from <= 0) take(until)
+ else if (until >= numRangeElements && numRangeElements >= 0) drop(from)
+ else {
+ val fromValue = locationAfterN(from)
+ if (from >= until) newEmptyRange(fromValue)
+ else new Range.Inclusive(fromValue, locationAfterN(until-1), step)
+ }
+
/** Creates a new range containing all the elements of this range except the last one.
*
* $doesNotUseBuilders