Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Chunk append/preprend Stack Overflow #4065

@tuleism

Description

@tuleism

Test: concat/append/prepend 1000000 elements

The concat test is copied from #3754. The rest are based on it.

    zio.test.test("stack safety concat") {
      val n  = 1000000
      val as = List.range(0, n).foldRight[Chunk[Int]](Chunk.empty)((a, as) => Chunk(a) ++ as)
      assert(as.toArray)(equalTo(Array.range(0, n)))
    },
    zio.test.test("stack safety append") {
      val n  = 1000000
      val as = List.range(0, n).foldRight[Chunk[Int]](Chunk.empty)((a, as) => as :+ a)
      assert(as.toArray)(equalTo(Array.range(0, n).reverse))
    },
    zio.test.test("stack safety prepend") {
      val n  = 1000000
      val as = List.range(0, n).foldRight[Chunk[Int]](Chunk.empty)((a, as) => a +: as)
      assert(as.toArray)(equalTo(Array.range(0, n).reverse))
    },

Scala Version 2.12 - passed for concat and append.

Error for prepend:

java.lang.StackOverflowError
        at zio.Chunk$PrependN.toArray(Chunk.scala:1275)
        at zio.Chunk$PrependN.toArray(Chunk.scala:1277)

Scala Version 2.13.1 - passed for concat.

For append:

java.lang.StackOverflowError
        at zio.Chunk$AppendN.toArray(Chunk.scala:1248)
        at zio.Chunk$AppendN.toArray(Chunk.scala:1248)

For preprend:

java.lang.StackOverflowError
        at scala.Array$.slowcopy(Array.scala:72)
        at scala.Array$.copy(Array.scala:98)
        at zio.Chunk$PrependN.toArray(Chunk.scala:1276)
        at zio.Chunk$PrependN.toArray(Chunk.scala:1277)

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions