diff --git a/compiler/src/dotty/tools/dotc/core/Decorators.scala b/compiler/src/dotty/tools/dotc/core/Decorators.scala index 2bdb6f171cb3..eb69f9ef637d 100644 --- a/compiler/src/dotty/tools/dotc/core/Decorators.scala +++ b/compiler/src/dotty/tools/dotc/core/Decorators.scala @@ -112,9 +112,12 @@ object Decorators { else x1 :: xs1 } - def foldRightBN[U](z: => U)(op: (T, => U) => U): U = xs match { - case Nil => z - case x :: xs1 => op(x, xs1.foldRightBN(z)(op)) + def foldRightBN[U](z: => U)(op: (T, => U) => U): U = { + @tailrec def foldLeftBN(xs: List[T], acc: => U): U = xs match { + case x :: xs1 => foldLeftBN(xs1, op(x, acc)) + case Nil => acc + } + foldLeftBN(xs.reverse, z) } final def hasSameLengthAs[U](ys: List[U]): Boolean = {