diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-07-04 11:33:16 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-07-04 11:33:16 +0200 |
commit | b38fc5eaac3eb938902fe56a69e44830d41c1f87 (patch) | |
tree | adbc92ba0fc1050307d62c304ca10aec4edc5cb5 /src | |
parent | 3f79f8eabfa4c55e167a4ca742fc46106f84b2e1 (diff) | |
parent | ff43de9f8f9e0e9fef55a825dfb067bdc61b90fc (diff) | |
download | scala-b38fc5eaac3eb938902fe56a69e44830d41c1f87.tar.gz scala-b38fc5eaac3eb938902fe56a69e44830d41c1f87.tar.bz2 scala-b38fc5eaac3eb938902fe56a69e44830d41c1f87.zip |
Merge pull request #3842 from Ichoran/issue/8335
SI-8335 List.++ avoidably burns memory
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/collection/immutable/List.scala | 6 |
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] |