Skip to content

Commit c8d50cf

Browse files
committed
Rename ArraySeqBuilder to VarArgsBuilder and apply review suggestions
1 parent c960179 commit c8d50cf

File tree

4 files changed

+36
-48
lines changed

4 files changed

+36
-48
lines changed

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ class Definitions {
524524
@tu lazy val newGenericArrayMethod: TermSymbol = DottyArraysModule.requiredMethod("newGenericArray")
525525
@tu lazy val newArrayMethod: TermSymbol = DottyArraysModule.requiredMethod("newArray")
526526

527-
@tu lazy val ArraySeqBuilderModule: Symbol = requiredModule("scala.runtime.ArraySeqBuilder")
527+
@tu lazy val VarArgsBuilderModule: Symbol = requiredModule("scala.runtime.VarArgsBuilder")
528528

529529
def getWrapVarargsArrayModule: Symbol = ScalaRuntimeModule
530530

compiler/src/dotty/tools/dotc/transform/PostTyper.scala

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -437,30 +437,17 @@ class PostTyper extends MacroTransform with InfoTransformer { thisPhase =>
437437
acc.select(defn.Int_+).appliedTo(len)
438438

439439
def makeBuilder(name: String) =
440-
ref(defn.ArraySeqBuilderModule).select(name.toTermName)
441-
def genericBuilder = makeBuilder("generic")
442-
.appliedToType(elemType)
443-
.appliedTo(totalLength)
440+
ref(defn.VarArgsBuilderModule).select(name.toTermName)
444441

445442
val builder =
446443
if defn.ScalaValueClasses().contains(elemCls) then
447-
makeBuilder(s"of${elemCls.name}").appliedTo(totalLength)
444+
makeBuilder(s"of${elemCls.name}")
448445
else if elemCls.derivesFrom(defn.ObjectClass) then
449-
val classTagType = defn.ClassTagClass.typeRef.appliedTo(elemType)
450-
val classTag = atPhase(Phases.typerPhase):
451-
ctx.typer.inferImplicitArg(classTagType, tree.span.startPos)
452-
classTag.tpe match
453-
case _: SearchFailureType =>
454-
genericBuilder
455-
case _ =>
456-
makeBuilder("ofRef")
457-
.appliedToType(elemType)
458-
.appliedTo(totalLength)
459-
.appliedTo(classTag)
446+
makeBuilder("ofRef").appliedToType(elemType)
460447
else
461-
genericBuilder
448+
makeBuilder("generic").appliedToType(elemType)
462449

463-
elems.foldLeft(builder): (bldr, elem) =>
450+
elems.foldLeft(builder.appliedTo(totalLength)): (bldr, elem) =>
464451
elem match
465452
case spread(arg) =>
466453
val selector =
@@ -469,6 +456,7 @@ class PostTyper extends MacroTransform with InfoTransformer { thisPhase =>
469456
bldr.select(selector.toTermName).appliedTo(arg)
470457
case _ => bldr.select("add".toTermName).appliedTo(elem)
471458
.select("result".toTermName)
459+
.appliedToNone
472460
end flattenSpreads
473461

474462
override def transform(tree: Tree)(using Context): Tree =

library/src/scala/runtime/ArraySeqBuilder.scala renamed to library/src/scala/runtime/VarArgsBuilder.scala

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ package scala.runtime
33
import scala.collection.immutable.ArraySeq
44
import scala.reflect.ClassTag
55

6-
sealed abstract class ArraySeqBuilder[T]:
6+
sealed abstract class VarArgsBuilder[T]:
77
def add(elem: T): this.type
88
def addSeq(elems: Seq[T]): this.type
99
def addArray(elems: Array[T]): this.type
10-
def result: ArraySeq[T]
10+
def result(): Seq[T]
1111

12-
object ArraySeqBuilder:
12+
object VarArgsBuilder:
1313

14-
def generic[T](n: Int) = new ArraySeqBuilder[T]:
14+
def generic[T](n: Int): VarArgsBuilder[T] = new VarArgsBuilder[T]:
1515
private val xs = new Array[AnyRef](n)
16-
def result = ArraySeq.ofRef(xs).asInstanceOf[ArraySeq[T]]
16+
def result() = ArraySeq.ofRef(xs).asInstanceOf[ArraySeq[T]]
1717
private var i = 0
1818
def add(elem: T): this.type =
1919
xs(i) = elem.asInstanceOf[AnyRef]
@@ -30,9 +30,9 @@ object ArraySeqBuilder:
3030
i += 1
3131
this
3232

33-
def ofRef[T <: AnyRef](n: Int)(using ClassTag[T]) = new ArraySeqBuilder[T]:
34-
private val xs = new Array[T](n)
35-
def result = ArraySeq.ofRef(xs)
33+
def ofRef[T <: AnyRef](n: Int): VarArgsBuilder[T] = new VarArgsBuilder[T]:
34+
private val xs = new Array[AnyRef](n)
35+
def result() = ArraySeq.ofRef(xs).asInstanceOf[ArraySeq[T]]
3636
private var i = 0
3737
def add(elem: T): this.type =
3838
xs(i) = elem
@@ -49,9 +49,9 @@ object ArraySeqBuilder:
4949
i += 1
5050
this
5151

52-
def ofByte(n: Int) = new ArraySeqBuilder[Byte]:
52+
def ofByte(n: Int): VarArgsBuilder[Byte] = new VarArgsBuilder[Byte]:
5353
private val xs = new Array[Byte](n)
54-
def result = ArraySeq.ofByte(xs)
54+
def result() = ArraySeq.ofByte(xs)
5555
private var i = 0
5656
def add(elem: Byte): this.type =
5757
xs(i) = elem
@@ -68,9 +68,9 @@ object ArraySeqBuilder:
6868
i += 1
6969
this
7070

71-
def ofShort(n: Int) = new ArraySeqBuilder[Short]:
71+
def ofShort(n: Int): VarArgsBuilder[Short] = new VarArgsBuilder[Short]:
7272
private val xs = new Array[Short](n)
73-
def result = ArraySeq.ofShort(xs)
73+
def result() = ArraySeq.ofShort(xs)
7474
private var i = 0
7575
def add(elem: Short): this.type =
7676
xs(i) = elem
@@ -87,9 +87,9 @@ object ArraySeqBuilder:
8787
i += 1
8888
this
8989

90-
def ofChar(n: Int) = new ArraySeqBuilder[Char]:
90+
def ofChar(n: Int): VarArgsBuilder[Char] = new VarArgsBuilder[Char]:
9191
private val xs = new Array[Char](n)
92-
def result = ArraySeq.ofChar(xs)
92+
def result() = ArraySeq.ofChar(xs)
9393
private var i = 0
9494
def add(elem: Char): this.type =
9595
xs(i) = elem
@@ -106,9 +106,9 @@ object ArraySeqBuilder:
106106
i += 1
107107
this
108108

109-
def ofInt(n: Int) = new ArraySeqBuilder[Int]:
109+
def ofInt(n: Int): VarArgsBuilder[Int] = new VarArgsBuilder[Int]:
110110
private val xs = new Array[Int](n)
111-
def result = ArraySeq.ofInt(xs)
111+
def result() = ArraySeq.ofInt(xs)
112112
private var i = 0
113113
def add(elem: Int): this.type =
114114
xs(i) = elem
@@ -125,9 +125,9 @@ object ArraySeqBuilder:
125125
i += 1
126126
this
127127

128-
def ofLong(n: Int) = new ArraySeqBuilder[Long]:
128+
def ofLong(n: Int): VarArgsBuilder[Long] = new VarArgsBuilder[Long]:
129129
private val xs = new Array[Long](n)
130-
def result = ArraySeq.ofLong(xs)
130+
def result() = ArraySeq.ofLong(xs)
131131
private var i = 0
132132
def add(elem: Long): this.type =
133133
xs(i) = elem
@@ -144,9 +144,9 @@ object ArraySeqBuilder:
144144
i += 1
145145
this
146146

147-
def ofFloat(n: Int) = new ArraySeqBuilder[Float]:
147+
def ofFloat(n: Int): VarArgsBuilder[Float] = new VarArgsBuilder[Float]:
148148
private val xs = new Array[Float](n)
149-
def result = ArraySeq.ofFloat(xs)
149+
def result() = ArraySeq.ofFloat(xs)
150150
private var i = 0
151151
def add(elem: Float): this.type =
152152
xs(i) = elem
@@ -163,9 +163,9 @@ object ArraySeqBuilder:
163163
i += 1
164164
this
165165

166-
def ofDouble(n: Int) = new ArraySeqBuilder[Double]:
166+
def ofDouble(n: Int): VarArgsBuilder[Double] = new VarArgsBuilder[Double]:
167167
private val xs = new Array[Double](n)
168-
def result = ArraySeq.ofDouble(xs)
168+
def result() = ArraySeq.ofDouble(xs)
169169
private var i = 0
170170
def add(elem: Double): this.type =
171171
xs(i) = elem
@@ -182,9 +182,9 @@ object ArraySeqBuilder:
182182
i += 1
183183
this
184184

185-
def ofBoolean(n: Int) = new ArraySeqBuilder[Boolean]:
185+
def ofBoolean(n: Int): VarArgsBuilder[Boolean] = new VarArgsBuilder[Boolean]:
186186
private val xs = new Array[Boolean](n)
187-
def result = ArraySeq.ofBoolean(xs)
187+
def result() = ArraySeq.ofBoolean(xs)
188188
private var i = 0
189189
def add(elem: Boolean): this.type =
190190
xs(i) = elem
@@ -201,9 +201,9 @@ object ArraySeqBuilder:
201201
i += 1
202202
this
203203

204-
def ofUnit(n: Int) = new ArraySeqBuilder[Unit]:
204+
def ofUnit(n: Int): VarArgsBuilder[Unit] = new VarArgsBuilder[Unit]:
205205
private val xs = new Array[Unit](n)
206-
def result = ArraySeq.ofUnit(xs)
206+
def result() = ArraySeq.ofUnit(xs)
207207
private var i = 0
208208
def add(elem: Unit): this.type =
209209
xs(i) = elem
@@ -220,4 +220,4 @@ object ArraySeqBuilder:
220220
i += 1
221221
this
222222

223-
end ArraySeqBuilder
223+
end VarArgsBuilder

project/Build.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,7 +1171,7 @@ object Build {
11711171
file(s"${baseDirectory.value}/src/scala/quoted/runtime/StopMacroExpansion.scala"),
11721172
file(s"${baseDirectory.value}/src/scala/compiletime/Erased.scala"),
11731173
file(s"${baseDirectory.value}/src/scala/annotation/internal/onlyCapability.scala"),
1174-
file(s"${baseDirectory.value}/src/scala/runtime/ArraySeqBuilder.scala"),
1174+
file(s"${baseDirectory.value}/src/scala/runtime/VarArgsBuilder.scala"),
11751175
)
11761176
)
11771177
lazy val `scala3-library-bootstrapped`: Project = project.in(file("library")).asDottyLibrary(Bootstrapped)
@@ -1310,7 +1310,7 @@ object Build {
13101310
file(s"${baseDirectory.value}/src/scala/quoted/runtime/StopMacroExpansion.scala"),
13111311
file(s"${baseDirectory.value}/src/scala/compiletime/Erased.scala"),
13121312
file(s"${baseDirectory.value}/src/scala/annotation/internal/onlyCapability.scala"),
1313-
file(s"${baseDirectory.value}/src/scala/runtime/ArraySeqBuilder.scala"),
1313+
file(s"${baseDirectory.value}/src/scala/runtime/VarArgsBuilder.scala"),
13141314
)
13151315
)
13161316

0 commit comments

Comments
 (0)