diff options
author | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-05-28 09:44:33 +0200 |
---|---|---|
committer | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-05-31 10:51:14 +0200 |
commit | ec1e80422676f02a088034d1658c7cb7f2e6e663 (patch) | |
tree | d9c725e3d6a8b95e3b4c8e426abfa03944122523 | |
parent | 4c2f6f3cb1e0eee11facae8c44e3cd7db11378f1 (diff) | |
download | scala-ec1e80422676f02a088034d1658c7cb7f2e6e663.tar.gz scala-ec1e80422676f02a088034d1658c7cb7f2e6e663.tar.bz2 scala-ec1e80422676f02a088034d1658c7cb7f2e6e663.zip |
Relax the semantics of `Range.lastElement` for internal use.
`lastElement` is only used in code paths where the range is
non-empty. It is therefore wasteful to try and give it a sort
of sensible value for empty ranges.
-rw-r--r-- | src/library/scala/collection/immutable/Range.scala | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/library/scala/collection/immutable/Range.scala b/src/library/scala/collection/immutable/Range.scala index ca4f1f47a7..2e56750115 100644 --- a/src/library/scala/collection/immutable/Range.scala +++ b/src/library/scala/collection/immutable/Range.scala @@ -91,17 +91,16 @@ extends scala.collection.AbstractSeq[Int] } } - private val lastElement = - if (isEmpty) start - step - else step match { - case 1 => if (isInclusive) end else end-1 - case -1 => if (isInclusive) end else end+1 - case _ => - val remainder = (gap % step).toInt - if (remainder != 0) end - remainder - else if (isInclusive) end - else end - step - } + // This field has a sensible value only for non-empty ranges + private val lastElement = step match { + case 1 => if (isInclusive) end else end-1 + case -1 => if (isInclusive) end else end+1 + case _ => + val remainder = (gap % step).toInt + if (remainder != 0) end - remainder + else if (isInclusive) end + else end - step + } /** The last element of this range. This method will return the correct value * even if there are too many elements to iterate over. |