Skip to content

Commit fdccb63

Browse files
committed
Add implicit conversion from IArray to immutable.ArraySeq
1 parent 369a465 commit fdccb63

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

library/src/scala/IArray.scala

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,51 @@ object opaques:
273273
extension [T](arr: IArray[T]) def zip[U: ClassTag](that: IArray[U]): IArray[(T, U)] =
274274
genericArrayOps(arr).zip(that)
275275
}
276+
277+
/** Conversion from IArray to immutable.ArraySeq */
278+
given genericWrapIArray[T]: Conversion[IArray[T], scala.collection.immutable.ArraySeq[T]] =
279+
arr => scala.collection.immutable.ArraySeq.unsafeWrapArray(arr.asInstanceOf[Array[T]])
280+
281+
/** Conversion from IArray to immutable.ArraySeq */
282+
given genericWrapAnyRefIArray[T <: AnyRef]: Conversion[IArray[T], scala.collection.immutable.ArraySeq[T]] =
283+
arr => scala.collection.immutable.ArraySeq.ofRef(arr.asInstanceOf[Array[T]])
284+
285+
/** Conversion from IArray to immutable.ArraySeq */
286+
given genericWrapIntIArray: Conversion[IArray[Int], scala.collection.immutable.ArraySeq[Int]] =
287+
arr => scala.collection.immutable.ArraySeq.ofInt(arr.asInstanceOf[Array[Int]])
288+
289+
/** Conversion from IArray to immutable.ArraySeq */
290+
given genericWrapDoubleIArray: Conversion[IArray[Double], scala.collection.immutable.ArraySeq[Double]] =
291+
arr => scala.collection.immutable.ArraySeq.ofDouble(arr.asInstanceOf[Array[Double]])
292+
293+
/** Conversion from IArray to immutable.ArraySeq */
294+
given genericWrapLongIArray: Conversion[IArray[Long], scala.collection.immutable.ArraySeq[Long]] =
295+
arr => scala.collection.immutable.ArraySeq.ofLong(arr.asInstanceOf[Array[Long]])
296+
297+
/** Conversion from IArray to immutable.ArraySeq */
298+
given genericWrapFloatIArray: Conversion[IArray[Float], scala.collection.immutable.ArraySeq[Float]] =
299+
arr => scala.collection.immutable.ArraySeq.ofFloat(arr.asInstanceOf[Array[Float]])
300+
301+
/** Conversion from IArray to immutable.ArraySeq */
302+
given genericWrapCharIArray: Conversion[IArray[Char], scala.collection.immutable.ArraySeq[Char]] =
303+
arr => scala.collection.immutable.ArraySeq.ofChar(arr.asInstanceOf[Array[Char]])
304+
305+
/** Conversion from IArray to immutable.ArraySeq */
306+
given genericWrapByteIArray: Conversion[IArray[Byte], scala.collection.immutable.ArraySeq[Byte]] =
307+
arr => scala.collection.immutable.ArraySeq.ofByte(arr.asInstanceOf[Array[Byte]])
308+
309+
/** Conversion from IArray to immutable.ArraySeq */
310+
given genericWrapShortIArray: Conversion[IArray[Short], scala.collection.immutable.ArraySeq[Short]] =
311+
arr => scala.collection.immutable.ArraySeq.ofShort(arr.asInstanceOf[Array[Short]])
312+
313+
/** Conversion from IArray to immutable.ArraySeq */
314+
given genericWrapBooleanIArray: Conversion[IArray[Boolean], scala.collection.immutable.ArraySeq[Boolean]] =
315+
arr => scala.collection.immutable.ArraySeq.ofBoolean(arr.asInstanceOf[Array[Boolean]])
316+
317+
/** Conversion from IArray to immutable.ArraySeq */
318+
given genericWrapUnitIArray: Conversion[IArray[Unit], scala.collection.immutable.ArraySeq[Unit]] =
319+
arr => scala.collection.immutable.ArraySeq.ofUnit(arr.asInstanceOf[Array[Unit]])
320+
276321
end opaques
277322

278323
type IArray[+T] = opaques.IArray[T]

tests/pos/IArrayToArraySeq.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def test: Unit =
2+
IArray(2, 1, 3).toList
3+
IArray(2, 1, 3).toSeq
4+
IArray(2, 1, 3).updated(1, 2)
5+
IArray(2, 1, 3).updated(1, "a")
6+
IArray(2, 1, 3).sorted
7+
IArray(2, 1, 3).appended("b")
8+
IArray(2, 1, 3).prepended("b")
9+
IArray(2, 1, 3).appendedAll(IArray(4,5, "a"))
10+
IArray(2, 1, 3).prependedAll(IArray(4,5, "a"))
11+
val x1: Seq[Int] = Array(1, 2)
12+
val x2: Seq[Int] = IArray(1, 2)

0 commit comments

Comments
 (0)