Skip to content

Commit fccdcb4

Browse files
committed
Back port SI-9315: Use java StringBuilder instead of scala StringBuilder
scala#4737
1 parent 2ad6844 commit fccdcb4

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/compiler/scala/tools/nsc/backend/jvm/BCodeIdiomatic.scala

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ trait BCodeIdiomatic {
4444
if (emitStackMapFrame) asm.ClassWriter.COMPUTE_FRAMES else 0
4545
)
4646

47-
val StringBuilderClassName = "scala/collection/mutable/StringBuilder"
47+
val StringBuilderClassName = "java/lang/StringBuilder"
4848

4949
val CLASS_CONSTRUCTOR_NAME = "<clinit>"
5050
val INSTANCE_CONSTRUCTOR_NAME = "<init>"
@@ -226,9 +226,13 @@ trait BCodeIdiomatic {
226226
*/
227227
final def genStringConcat(el: BType) {
228228

229-
val jtype =
230-
if (el.isArray || el.isClass) ObjectReference
231-
else el
229+
val jtype = el match {
230+
case ct: ClassBType if ct.isSubtypeOf(StringReference).get => StringReference
231+
case ct: ClassBType if ct.isSubtypeOf(JavaStringBufferReference).get => JavaStringBufferReference
232+
case ct: ClassBType if ct.isSubtypeOf(JavaCharSequenceReference).get => JavaCharSequenceReference
233+
case rt: RefBType => ObjectReference
234+
case pt: PrimitiveBType => pt
235+
}
232236

233237
val bt = MethodBType(List(jtype), StringBuilderReference)
234238

0 commit comments

Comments
 (0)