diff options
author | Martin Odersky <odersky@gmail.com> | 2009-05-14 09:36:49 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-05-14 09:36:49 +0000 |
commit | 8fa8118e341cc0174d789b508b8b6ebab3571582 (patch) | |
tree | c45a0ba6be7233898f406dfdcf2f4a565a8f73ee /src/library/scala/collection/immutable/List.scala | |
parent | 302427358e0ab97c3a12302e94295ca09465589d (diff) | |
download | scala-8fa8118e341cc0174d789b508b8b6ebab3571582.tar.gz scala-8fa8118e341cc0174d789b508b8b6ebab3571582.tar.bz2 scala-8fa8118e341cc0174d789b508b8b6ebab3571582.zip |
cleaned up collection builder framework
Diffstat (limited to 'src/library/scala/collection/immutable/List.scala')
-rw-r--r-- | src/library/scala/collection/immutable/List.scala | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala index e715fad0fa..acfbdc531f 100644 --- a/src/library/scala/collection/immutable/List.scala +++ b/src/library/scala/collection/immutable/List.scala @@ -12,7 +12,7 @@ package scala.collection.immutable import mutable.ListBuffer -import generic.{SequenceFactory, Builder, BuilderFactory, LinearSequenceTemplate} +import generic._ /** A class representing an ordered collection of elements of type * <code>a</code>. This class comes with two implementing case @@ -23,7 +23,11 @@ import generic.{SequenceFactory, Builder, BuilderFactory, LinearSequenceTemplate * @author Martin Odersky and others * @version 2.8 */ -sealed abstract class List[+A] extends LinearSequence[A] with Product with LinearSequenceTemplate[A, List[A]] { +sealed abstract class List[+A] extends LinearSequence[A] + with Product + with TraversableClass[A, List] + with LinearSequenceTemplate[A, List[A]] { + override def companion: Companion[List] = List import collection.{Iterable, Traversable, Sequence, Vector} @@ -46,10 +50,6 @@ sealed abstract class List[+A] extends LinearSequence[A] with Product with Linea */ def tail: List[A] - /** Creates a list buffer as builder for this class */ - override protected[this] def newBuilder = List.newBuilder - override def traversableBuilder[B]: Builder[B, List[B]] = List.newBuilder[B] - // New methods in List /** <p> @@ -488,8 +488,7 @@ object List extends SequenceFactory[List] { import collection.{Iterable, Sequence, Vector} - type Coll = List[_] - implicit def builderFactory[A]: BuilderFactory[A, List[A], Coll] = new BuilderFactory[A, List[A], Coll] { def apply(from: Coll) = new ListBuffer[A] } + implicit def builderFactory[A]: BuilderFactory[A, List[A], Coll] = new VirtualBuilderFactory[A] def newBuilder[A]: Builder[A, List[A]] = new ListBuffer[A] override def empty[A]: List[A] = Nil |