summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-07-04 11:33:16 +0200
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-07-04 11:33:16 +0200
commitb38fc5eaac3eb938902fe56a69e44830d41c1f87 (patch)
treeadbc92ba0fc1050307d62c304ca10aec4edc5cb5
parent3f79f8eabfa4c55e167a4ca742fc46106f84b2e1 (diff)
parentff43de9f8f9e0e9fef55a825dfb067bdc61b90fc (diff)
downloadscala-b38fc5eaac3eb938902fe56a69e44830d41c1f87.tar.gz
scala-b38fc5eaac3eb938902fe56a69e44830d41c1f87.tar.bz2
scala-b38fc5eaac3eb938902fe56a69e44830d41c1f87.zip
Merge pull request #3842 from Ichoran/issue/8335
SI-8335 List.++ avoidably burns memory
-rw-r--r--src/library/scala/collection/immutable/List.scala6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala
index 930e13a9d3..aa9dec2761 100644
--- a/src/library/scala/collection/immutable/List.scala
+++ b/src/library/scala/collection/immutable/List.scala
@@ -190,11 +190,9 @@ sealed abstract class List[+A] extends AbstractSeq[A]
// Overridden methods from IterableLike and SeqLike or overloaded variants of such methods
- override def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[List[A], B, That]): That = {
- val b = bf(this)
- if (b.isInstanceOf[ListBuffer[_]]) (this ::: that.seq.toList).asInstanceOf[That]
+ override def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[List[A], B, That]): That =
+ if (bf eq List.ReusableCBF) (this ::: that.seq.toList).asInstanceOf[That]
else super.++(that)
- }
override def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That = bf match {
case _: List.GenericCanBuildFrom[_] => (elem :: this).asInstanceOf[That]