diff options
author | Martin Odersky <odersky@gmail.com> | 2016-03-09 08:26:23 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-03-12 16:08:39 +0100 |
commit | 6ddc9112d0eb8a0f32b82c236244defdaeec5ce8 (patch) | |
tree | d9a323c66e73478ead3257371ded5a35609a4f19 /src | |
parent | c0927cf6a8c622d38f262939266145e48e0bc092 (diff) | |
download | dotty-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.scala | 7 |
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 = { |