From 8fa8118e341cc0174d789b508b8b6ebab3571582 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 14 May 2009 09:36:49 +0000 Subject: cleaned up collection builder framework --- src/library/scala/collection/immutable/List.scala | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src/library/scala/collection/immutable/List.scala') 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 * a. 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 /**

@@ -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 -- cgit v1.2.3