From baaff96be8a578316cab6aa26e07c609b60bcbdf Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 11 Mar 2010 16:34:44 +0000 Subject: Closes #3157 by overriding +: in List. --- src/library/scala/collection/immutable/List.scala | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/library') diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala index 70b0649264..6e4c1ffe37 100644 --- a/src/library/scala/collection/immutable/List.scala +++ b/src/library/scala/collection/immutable/List.scala @@ -133,7 +133,7 @@ sealed abstract class List[+A] extends LinearSeq[A] loop(this) } - // Overridden methods from IterableLike or overloaded variants of such methods + // Overridden methods from IterableLike and SeqLike or overloaded variants of such methods override def ++[B >: A, That](that: Traversable[B])(implicit bf: CanBuildFrom[List[A], B, That]): That = { val b = bf(this) @@ -144,6 +144,11 @@ sealed abstract class List[+A] extends LinearSeq[A] override def ++[B >: A, That](that: Iterator[B])(implicit bf: CanBuildFrom[List[A], B, That]): That = this ++ that.toList + override def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That = bf match { + case _: List.GenericCanBuildFrom[_] => (elem :: this).asInstanceOf[That] + case _ => super.+:(elem)(bf) + } + override def toList: List[A] = this override def take(n: Int): List[A] = { -- cgit v1.2.3