Skip to content

Commit 94439fc

Browse files
author
Antoine Brunner
committed
Fix unzip issue
1 parent e47663c commit 94439fc

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

library/src-bootstrapped/scala/IArray.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,10 @@ object opaques
191191
def [T](arr: IArray[T]) takeWhile(p: T => Boolean): IArray[T] =
192192
arr.asInstanceOf[Array[T]].takeWhile(p).asInstanceOf
193193

194-
// def [T, U: ClassTag, V: ClassTag](arr: IArray[T]) unzip(given T => (U, V)): (IArray[U], IArray[V]) =
195-
// arr.asInstanceOf[Array[T]].unzip match {
196-
// case (x, y) => (x.asInstanceOf[IArray[U]], y.asInstanceOf[IArray[V]])
197-
// }
194+
def [U: ClassTag, V: ClassTag](arr: IArray[(U, V)]) unzip: (IArray[U], IArray[V]) =
195+
arr.asInstanceOf[Array[(U, V)]].unzip match {
196+
case (x, y) => (x.asInstanceOf[IArray[U]], y.asInstanceOf[IArray[V]])
197+
}
198198

199199
def [T, U: ClassTag](arr: IArray[T]) zip(that: IterableOnce[U]): IArray[(T, U)] =
200200
arr.asInstanceOf[Array[T]].zip(that).asInstanceOf
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11

22
object Test extends App {
3-
val arr = IArray[Int](1, 2, 3)
4-
println(arr.take(2))
3+
def assertNew[T, U](expr: => IArray[T], original: IArray[U]): Unit = {
4+
val result = expr
5+
assert(result ne original, "IArray was mutated in place")
6+
println(result)
7+
}
8+
9+
val arr = Array[Int](1,2,3,4,5,6,7,8,9,10)
10+
11+
assertNew(arr.filter(_ % 2 == 0), arr)
512
}

0 commit comments

Comments
 (0)