summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSébastien Doeraene <sjrdoeraene@gmail.com>2016-05-28 09:44:33 +0200
committerSébastien Doeraene <sjrdoeraene@gmail.com>2016-05-31 10:51:14 +0200
commitec1e80422676f02a088034d1658c7cb7f2e6e663 (patch)
treed9c725e3d6a8b95e3b4c8e426abfa03944122523 /src
parent4c2f6f3cb1e0eee11facae8c44e3cd7db11378f1 (diff)
downloadscala-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.
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/immutable/Range.scala21
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.