Skip to content

Commit b6899a5

Browse files
committed
Use Builder.mapResult
1 parent 46c0540 commit b6899a5

File tree

2 files changed

+4
-17
lines changed

2 files changed

+4
-17
lines changed

library/src/scala/IArray.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import reflect.ClassTag
33

44
import scala.collection.{LazyZip2, SeqView, Searching, Stepper, StepperShape}
55
import scala.collection.immutable.ArraySeq
6-
import scala.collection.mutable.IArrayBuilder
6+
import scala.collection.mutable.{Builder, IArrayBuilder}
77

88
opaque type IArray[+T] = Array[_ <: T]
99

@@ -440,7 +440,7 @@ object IArray:
440440
def from[A : ClassTag](it: IterableOnce[A]): Array[A] =
441441
Array.from(it)
442442

443-
def newBuilder[T](using t: ClassTag[T]): IArrayBuilder[T] =
443+
def newBuilder[T](using t: ClassTag[T]): Builder[T, IArray[T]] =
444444
IArrayBuilder.make[T]
445445

446446
/** Concatenates all arrays into a single immutable array.

library/src/scala/collection/mutable/IArrayBuilder.scala

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,8 @@ object IArrayBuilder {
3939
* @tparam T type of the elements for the array builder, with a `ClassTag` context bound.
4040
* @return a new empty array builder.
4141
*/
42-
@inline def make[T: ClassTag]: IArrayBuilder[T] = {
43-
val tag = implicitly[ClassTag[T]]
44-
tag.runtimeClass match {
45-
case java.lang.Byte.TYPE => new IArrayBuilder.ofByte().asInstanceOf[IArrayBuilder[T]]
46-
case java.lang.Short.TYPE => new IArrayBuilder.ofShort().asInstanceOf[IArrayBuilder[T]]
47-
case java.lang.Character.TYPE => new IArrayBuilder.ofChar().asInstanceOf[IArrayBuilder[T]]
48-
case java.lang.Integer.TYPE => new IArrayBuilder.ofInt().asInstanceOf[IArrayBuilder[T]]
49-
case java.lang.Long.TYPE => new IArrayBuilder.ofLong().asInstanceOf[IArrayBuilder[T]]
50-
case java.lang.Float.TYPE => new IArrayBuilder.ofFloat().asInstanceOf[IArrayBuilder[T]]
51-
case java.lang.Double.TYPE => new IArrayBuilder.ofDouble().asInstanceOf[IArrayBuilder[T]]
52-
case java.lang.Boolean.TYPE => new IArrayBuilder.ofBoolean().asInstanceOf[IArrayBuilder[T]]
53-
case java.lang.Void.TYPE => new IArrayBuilder.ofUnit().asInstanceOf[IArrayBuilder[T]]
54-
case _ => new IArrayBuilder.ofRef[T with AnyRef]()(tag.asInstanceOf[ClassTag[T with AnyRef]]).asInstanceOf[IArrayBuilder[T]]
55-
}
56-
}
42+
@inline def make[T: ClassTag]: Builder[T, IArray[T]] =
43+
ArrayBuilder.make[T].mapResult(_.asInstanceOf[IArray[T]])
5744

5845
/** A class for array builders for arrays of reference types.
5946
*

0 commit comments

Comments
 (0)