aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-03-09 08:26:23 +0100
committerMartin Odersky <odersky@gmail.com>2016-03-12 16:08:39 +0100
commit6ddc9112d0eb8a0f32b82c236244defdaeec5ce8 (patch)
treed9a323c66e73478ead3257371ded5a35609a4f19 /src
parentc0927cf6a8c622d38f262939266145e48e0bc092 (diff)
downloaddotty-6ddc9112d0eb8a0f32b82c236244defdaeec5ce8.tar.gz
dotty-6ddc9112d0eb8a0f32b82c236244defdaeec5ce8.tar.bz2
dotty-6ddc9112d0eb8a0f32b82c236244defdaeec5ce8.zip
Fix assert in Rewrites
`Iterator.sliding(2, 1)` returns a one-element result if the original iterator contains only one element, which makes it unpleasant to use for our task. Replaced by a fold.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/rewrite/Rewrites.scala7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/rewrite/Rewrites.scala b/src/dotty/tools/dotc/rewrite/Rewrites.scala
index 27dafebcf..cda9e8565 100644
--- a/src/dotty/tools/dotc/rewrite/Rewrites.scala
+++ b/src/dotty/tools/dotc/rewrite/Rewrites.scala
@@ -23,8 +23,11 @@ object Rewrites {
def apply(cs: Array[Char]): Array[Char] = {
val delta = pbuf.map(_.delta).sum
val patches = pbuf.toList.sortBy(_.pos.start)
- patches.iterator.sliding(2, 1).foreach(ps =>
- assert(ps(0).pos.end <= ps(1).pos.start, s"overlapping patches: ${ps(0)} and ${ps(1)}"))
+ if (patches.nonEmpty)
+ patches reduceLeft {(p1, p2) =>
+ assert(p1.pos.end <= p2.pos.start, s"overlapping patches: $p1 and $p2")
+ p2
+ }
val ds = new Array[Char](cs.length + delta)
def loop(ps: List[Patch], inIdx: Int, outIdx: Int): Unit = {
def copy(upTo: Int): Int = {