From 931d2d43cdaf37ae644ad5b2ff23d26d4d05498d Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sat, 9 May 2009 11:37:19 +0000 Subject: Removed redundant type parameter for class Buil... Removed redundant type parameter for class Builder --- src/library/scala/Array.scala | 4 ++-- src/library/scala/Enumeration.scala | 2 +- src/library/scala/collection/Iterable.scala | 4 ++-- src/library/scala/collection/LinearSequence.scala | 4 ++-- src/library/scala/collection/Map.scala | 4 ++-- src/library/scala/collection/Sequence.scala | 4 ++-- src/library/scala/collection/Set.scala | 2 +- src/library/scala/collection/SortedMap.scala | 2 +- src/library/scala/collection/Traversable.scala | 6 +++--- src/library/scala/collection/Vector.scala | 4 ++-- src/library/scala/collection/generic/AddingBuilder.scala | 2 +- src/library/scala/collection/generic/Builder.scala | 6 +++--- src/library/scala/collection/generic/BuilderFactory.scala | 2 +- src/library/scala/collection/generic/ImmutableMapBuilder.scala | 2 +- src/library/scala/collection/generic/ImmutableMapFactory.scala | 2 +- src/library/scala/collection/generic/ImmutableMapTemplate.scala | 2 +- src/library/scala/collection/generic/LazyBuilder.scala | 2 +- src/library/scala/collection/generic/MutableMapBuilder.scala | 2 +- src/library/scala/collection/generic/MutableMapFactory.scala | 2 +- src/library/scala/collection/generic/MutableMapTemplate.scala | 4 ++-- src/library/scala/collection/generic/SetBuilder.scala | 2 +- src/library/scala/collection/generic/SetFactory.scala | 2 +- src/library/scala/collection/generic/SetTemplate.scala | 2 +- src/library/scala/collection/generic/TraversableFactory.scala | 2 +- src/library/scala/collection/generic/TraversableTemplate.scala | 4 ++-- src/library/scala/collection/generic/TraversableView.scala | 2 +- src/library/scala/collection/generic/TraversableViewTemplate.scala | 2 +- src/library/scala/collection/immutable/HashMap.scala | 2 +- src/library/scala/collection/immutable/HashSet.scala | 2 +- src/library/scala/collection/immutable/Iterable.scala | 4 ++-- src/library/scala/collection/immutable/LinearSequence.scala | 4 ++-- src/library/scala/collection/immutable/List.scala | 4 ++-- src/library/scala/collection/immutable/ListMap.scala | 2 +- src/library/scala/collection/immutable/ListSet.scala | 2 +- src/library/scala/collection/immutable/Map.scala | 2 +- src/library/scala/collection/immutable/Sequence.scala | 4 ++-- src/library/scala/collection/immutable/Set.scala | 2 +- src/library/scala/collection/immutable/SortedMap.scala | 2 +- src/library/scala/collection/immutable/Stream.scala | 6 +++--- src/library/scala/collection/immutable/Traversable.scala | 4 ++-- src/library/scala/collection/immutable/TreeMap.scala | 4 ++-- src/library/scala/collection/immutable/TreeSet.scala | 4 ++-- src/library/scala/collection/immutable/Vector.scala | 4 ++-- src/library/scala/collection/mutable/ArrayBuffer.scala | 6 +++--- src/library/scala/collection/mutable/Buffer.scala | 4 ++-- src/library/scala/collection/mutable/DoubleLinkedList.scala | 4 ++-- src/library/scala/collection/mutable/HashMap.scala | 2 +- src/library/scala/collection/mutable/HashSet.scala | 2 +- src/library/scala/collection/mutable/Iterable.scala | 4 ++-- src/library/scala/collection/mutable/LinearSequence.scala | 4 ++-- src/library/scala/collection/mutable/LinkedList.scala | 4 ++-- src/library/scala/collection/mutable/ListBuffer.scala | 6 +++--- src/library/scala/collection/mutable/Map.scala | 2 +- src/library/scala/collection/mutable/MutableList.scala | 2 +- src/library/scala/collection/mutable/ResizableArray.scala | 4 ++-- src/library/scala/collection/mutable/Sequence.scala | 4 ++-- src/library/scala/collection/mutable/Set.scala | 2 +- src/library/scala/collection/mutable/StringBuilder.scala | 2 +- src/library/scala/collection/mutable/SynchronizedMap.scala | 4 ++-- src/library/scala/collection/mutable/Traversable.scala | 4 ++-- src/library/scala/collection/mutable/Vector.scala | 4 ++-- src/library/scala/runtime/BoxedArray.scala | 2 +- src/library/scala/runtime/RichString.scala | 3 +-- src/library/scala/xml/NodeSeq.scala | 2 +- 64 files changed, 100 insertions(+), 101 deletions(-) diff --git a/src/library/scala/Array.scala b/src/library/scala/Array.scala index 282885f0bb..6336a774c6 100644 --- a/src/library/scala/Array.scala +++ b/src/library/scala/Array.scala @@ -27,7 +27,7 @@ object Array extends SequenceFactory[Array] { type Coll = Array[_] implicit def builderFactory[A]: BuilderFactory[A, Array[A], Coll] = new BuilderFactory[A, Array[A], Coll] { def apply(from: Coll) = newBuilder[A] } - def newBuilder[A]: Builder[A, Array[A], Any] = new ArrayBuffer[A].mapResult(_.toArray) + def newBuilder[A]: Builder[A, Array[A]] = new ArrayBuffer[A].mapResult(_.toArray) private def slowcopy( src : AnyRef, @@ -248,7 +248,7 @@ object Array extends SequenceFactory[Array] { */ final class Array[A](_length: Int) extends Vector[A] with VectorTemplate[A, Array[A]] { - override protected[this] def newBuilder: Builder[A, Array[A], Any] = throw new Error() + override protected[this] def newBuilder: Builder[A, Array[A]] = throw new Error() /** Multidimensional array creation * @deprecated use Array.ofDim instead diff --git a/src/library/scala/Enumeration.scala b/src/library/scala/Enumeration.scala index 6a9e1331b1..d88ac05789 100644 --- a/src/library/scala/Enumeration.scala +++ b/src/library/scala/Enumeration.scala @@ -232,7 +232,7 @@ abstract class Enumeration(initial: Int, names: String*) { s } /** A builder object for value sets */ - def newBuilder: Builder[Value, ValueSet, Any] = new AddingBuilder(empty) + def newBuilder: Builder[Value, ValueSet] = new AddingBuilder(empty) /** The implicit builder for value sets */ implicit def builderFactory: BuilderFactory[Value, ValueSet, ValueSet] = new BuilderFactory[Value, ValueSet, ValueSet] { def apply(from: ValueSet) = newBuilder } } diff --git a/src/library/scala/collection/Iterable.scala b/src/library/scala/collection/Iterable.scala index 501f08b15b..42b6c5afe7 100644 --- a/src/library/scala/collection/Iterable.scala +++ b/src/library/scala/collection/Iterable.scala @@ -33,7 +33,7 @@ import generic._ */ trait Iterable[+A] extends Traversable[A] with IterableTemplate[A, Iterable[A]] { override protected[this] def newBuilder = Iterable.newBuilder - override def traversableBuilder[B]: Builder[B, Iterable[B], Any] = Iterable.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Iterable[B]] = Iterable.newBuilder[B] /* The following methods are inherited from trait IterableTemplate * @@ -51,7 +51,7 @@ object Iterable extends TraversableFactory[Iterable] { type Coll = Iterable[_] implicit def builderFactory[A]: BuilderFactory[A, Iterable[A], Coll] = new BuilderFactory[A, Iterable[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Iterable[A], Any] = immutable.Iterable.newBuilder[A] + def newBuilder[A]: Builder[A, Iterable[A]] = immutable.Iterable.newBuilder[A] def fromOld[A](it: scala.Iterable[A]): Iterable[A] = new Iterable[A] { def elements: Iterator[A] = Iterator.fromOld(it.elements) diff --git a/src/library/scala/collection/LinearSequence.scala b/src/library/scala/collection/LinearSequence.scala index e6504376dc..aed1b88a9a 100644 --- a/src/library/scala/collection/LinearSequence.scala +++ b/src/library/scala/collection/LinearSequence.scala @@ -28,11 +28,11 @@ import util.control.Breaks._ */ trait LinearSequence[+A] extends Sequence[A] with LinearSequenceTemplate[A, LinearSequence[A]] { override protected[this] def newBuilder = LinearSequence.newBuilder - override def traversableBuilder[B]: Builder[B, LinearSequence[B], Any] = LinearSequence.newBuilder[B] + override def traversableBuilder[B]: Builder[B, LinearSequence[B]] = LinearSequence.newBuilder[B] } object LinearSequence extends SequenceFactory[LinearSequence] { type Coll = LinearSequence[_] implicit def builderFactory[A]: BuilderFactory[A, LinearSequence[A], Coll] = new BuilderFactory[A, LinearSequence[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, LinearSequence[A], Any] = immutable.LinearSequence.newBuilder[A] + def newBuilder[A]: Builder[A, LinearSequence[A]] = immutable.LinearSequence.newBuilder[A] } diff --git a/src/library/scala/collection/Map.scala b/src/library/scala/collection/Map.scala index 66c8a78666..c395bd85e3 100644 --- a/src/library/scala/collection/Map.scala +++ b/src/library/scala/collection/Map.scala @@ -38,10 +38,10 @@ import generic._ trait Map[A, +B] extends Iterable[(A, B)] with MapTemplate[A, B, Map[A, B]] { def empty: Map[A, B] = Map.empty - override protected[this] def newBuilder : Builder[(A, B), Map[A, B], Any] = + override protected[this] def newBuilder : Builder[(A, B), Map[A, B]] = throw new UnsupportedOperationException("Map.newBuilder") - def mapBuilder[A, B]: Builder[(A, B), Map[A, B], Any] = Map.newBuilder[A, B] + def mapBuilder[A, B]: Builder[(A, B), Map[A, B]] = Map.newBuilder[A, B] } /* Factory object for `Map` class */ diff --git a/src/library/scala/collection/Sequence.scala b/src/library/scala/collection/Sequence.scala index 8e099a2d63..5391a89997 100644 --- a/src/library/scala/collection/Sequence.scala +++ b/src/library/scala/collection/Sequence.scala @@ -30,14 +30,14 @@ import util.control.Breaks._ */ trait Sequence[+A] extends PartialFunction[Int, A] with Iterable[A] with SequenceTemplate[A, Sequence[A]] { override protected[this] def newBuilder = Sequence.newBuilder - override def traversableBuilder[B]: Builder[B, Sequence[B], Any] = Sequence.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Sequence[B]] = Sequence.newBuilder[B] } object Sequence extends SequenceFactory[Sequence] { type Coll = Sequence[_] implicit def builderFactory[A]: BuilderFactory[A, Sequence[A], Coll] = new BuilderFactory[A, Sequence[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Sequence[A], Any] = immutable.Sequence.newBuilder[A] + def newBuilder[A]: Builder[A, Sequence[A]] = immutable.Sequence.newBuilder[A] /** @deprecated use View instead */ diff --git a/src/library/scala/collection/Set.scala b/src/library/scala/collection/Set.scala index 44d6c159f3..16cfbf3a1b 100644 --- a/src/library/scala/collection/Set.scala +++ b/src/library/scala/collection/Set.scala @@ -23,7 +23,7 @@ import generic._ */ trait Set[A] extends (A => Boolean) with Iterable[A] with SetTemplate[A, Set[A]] { def empty = Set.empty - override def traversableBuilder[B]: Builder[B, Set[B], Any] = Set.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Set[B]] = Set.newBuilder[B] } /* Factory object for `Set` class */ diff --git a/src/library/scala/collection/SortedMap.scala b/src/library/scala/collection/SortedMap.scala index 55eab25648..b2f44ebbac 100644 --- a/src/library/scala/collection/SortedMap.scala +++ b/src/library/scala/collection/SortedMap.scala @@ -20,7 +20,7 @@ import generic._ trait SortedMap[A, +B] extends Map[A, B] with SortedMapTemplate[A, B, SortedMap[A, B]] { /** Needs to be overridden in subclasses. */ override def empty: SortedMap[A, B] = throw new UnsupportedOperationException("SortedMap.empty") - override protected[this] def newBuilder : Builder[(A, B), SortedMap[A, B], Any] = + override protected[this] def newBuilder : Builder[(A, B), SortedMap[A, B]] = throw new UnsupportedOperationException("SortedMap.newBuilder") } diff --git a/src/library/scala/collection/Traversable.scala b/src/library/scala/collection/Traversable.scala index dc29ee4945..1b29f9efd1 100644 --- a/src/library/scala/collection/Traversable.scala +++ b/src/library/scala/collection/Traversable.scala @@ -27,7 +27,7 @@ import generic._ */ trait Traversable[+A] extends TraversableTemplate[A, Traversable[A]] { protected[this] def newBuilder = Traversable.newBuilder - def traversableBuilder[B]: Builder[B, Traversable[B], Any] = Traversable.newBuilder[B] + def traversableBuilder[B]: Builder[B, Traversable[B]] = Traversable.newBuilder[B] /* The following methods are inherited from TraversableTemplate * @@ -95,7 +95,7 @@ object Traversable extends TraversableFactory[Traversable] { self => type Coll = Traversable[_] implicit def builderFactory[A]: BuilderFactory[A, Traversable[A], Coll] = new BuilderFactory[A, Traversable[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Traversable[A], Any] = immutable.Traversable.newBuilder[A] + def newBuilder[A]: Builder[A, Traversable[A]] = immutable.Traversable.newBuilder[A] /** A wrapper class which adds `min` and `max` methods to iterables of an element type that has an Ordering. */ @@ -154,7 +154,7 @@ object Traversable extends TraversableFactory[Traversable] { self => /** Returns the transposition of the wrapped iterable `self`: rows become columns and columns become rows. */ def transpose[Row, That](implicit bf: BuilderFactory[A, Row, This], bbf: BuilderFactory[Row, That, This]): That = { - val bs: Array[Builder[A, Row, This]] = self.head.map(_ => bf(self))(Traversable.builderFactory[Builder[A, Row, This]]).toArray + val bs: Array[Builder[A, Row]] = self.head.map(_ => bf(self))(Traversable.builderFactory[Builder[A, Row]]).toArray for (xs <- self) { var i = 0 for (x <- xs) { diff --git a/src/library/scala/collection/Vector.scala b/src/library/scala/collection/Vector.scala index 9010f01a1e..7ac579283c 100644 --- a/src/library/scala/collection/Vector.scala +++ b/src/library/scala/collection/Vector.scala @@ -23,11 +23,11 @@ import mutable.ArrayBuffer */ trait Vector[+A] extends Sequence[A] with VectorTemplate[A, Vector[A]] { override protected[this] def newBuilder = Vector.newBuilder - override def traversableBuilder[B]: Builder[B, Vector[B], Any] = Vector.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Vector[B]] = Vector.newBuilder[B] } object Vector extends SequenceFactory[Vector] { type Coll = Vector[_] implicit def builderFactory[A]: BuilderFactory[A, Vector[A], Coll] = new BuilderFactory[A, Vector[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Vector[A], Any] = mutable.Vector.newBuilder[A] + def newBuilder[A]: Builder[A, Vector[A]] = mutable.Vector.newBuilder[A] } diff --git a/src/library/scala/collection/generic/AddingBuilder.scala b/src/library/scala/collection/generic/AddingBuilder.scala index 3b44e70a6a..40e8fb2862 100644 --- a/src/library/scala/collection/generic/AddingBuilder.scala +++ b/src/library/scala/collection/generic/AddingBuilder.scala @@ -18,7 +18,7 @@ package scala.collection.generic * @param empty The empty element of the collection. */ class AddingBuilder[A, Coll <: Addable[A, Coll] with Iterable[A] with IterableTemplate[A, Coll]](empty: Coll) -extends Builder[A, Coll, Any] { +extends Builder[A, Coll] { protected var elems: Coll = empty def +=(x: A) { elems = elems + x } def clear() { elems = empty } diff --git a/src/library/scala/collection/generic/Builder.scala b/src/library/scala/collection/generic/Builder.scala index 686e684cf3..0c826c8976 100644 --- a/src/library/scala/collection/generic/Builder.scala +++ b/src/library/scala/collection/generic/Builder.scala @@ -15,7 +15,7 @@ package scala.collection.generic * to the builder with += and then converting to the required collection type with * `result`. */ -trait Builder[-Elem, +To, -From] extends Growable[Elem] { +trait Builder[-Elem, +To] extends Growable[Elem] { /** Adds a single element to the builder. * @param elem The element to be added @@ -39,8 +39,8 @@ trait Builder[-Elem, +To, -From] extends Growable[Elem] { * a given function is applied to the current builder's result. * @param f the function to apply to the builder's result */ - def mapResult[NewTo](f: To => NewTo): Builder[Elem, NewTo, From] = - new Builder[Elem, NewTo, From] with Proxy { + def mapResult[NewTo](f: To => NewTo): Builder[Elem, NewTo] = + new Builder[Elem, NewTo] with Proxy { val self = Builder.this def +=(x: Elem) = self += x def clear() = self.clear() diff --git a/src/library/scala/collection/generic/BuilderFactory.scala b/src/library/scala/collection/generic/BuilderFactory.scala index 40bee09e43..2d2bf01f30 100644 --- a/src/library/scala/collection/generic/BuilderFactory.scala +++ b/src/library/scala/collection/generic/BuilderFactory.scala @@ -15,5 +15,5 @@ package scala.collection.generic trait BuilderFactory[-Elem, +To, -From] { /** Creates a new builder */ - def apply(from: From): Builder[Elem, To, From] + def apply(from: From): Builder[Elem, To] } diff --git a/src/library/scala/collection/generic/ImmutableMapBuilder.scala b/src/library/scala/collection/generic/ImmutableMapBuilder.scala index 028311e7e2..337d7d14d1 100644 --- a/src/library/scala/collection/generic/ImmutableMapBuilder.scala +++ b/src/library/scala/collection/generic/ImmutableMapBuilder.scala @@ -18,7 +18,7 @@ package scala.collection.generic * @param empty The empty element of the collection. */ class ImmutableMapBuilder[A, B, Coll <: immutable.Map[A, B] with MapTemplate[A, B, Coll]](empty: Coll) -extends Builder[(A, B), Coll, Any] { +extends Builder[(A, B), Coll] { protected var elems: Coll = empty def +=(x: (A, B)) { elems = (elems + x).asInstanceOf[Coll] } def clear() { elems = empty } diff --git a/src/library/scala/collection/generic/ImmutableMapFactory.scala b/src/library/scala/collection/generic/ImmutableMapFactory.scala index 54d4c90824..51758fe8c2 100644 --- a/src/library/scala/collection/generic/ImmutableMapFactory.scala +++ b/src/library/scala/collection/generic/ImmutableMapFactory.scala @@ -4,7 +4,7 @@ package scala.collection.generic */ abstract class ImmutableMapFactory[CC[A, +B] <: immutable.Map[A, B] with MapTemplate[A, B, CC[A, B]]] { - def newBuilder[A, B]: Builder[(A, B), CC[A, B], Any] = new ImmutableMapBuilder[A, B, CC[A, B]](empty[A, B]) + def newBuilder[A, B]: Builder[(A, B), CC[A, B]] = new ImmutableMapBuilder[A, B, CC[A, B]](empty[A, B]) def empty[A, B]: CC[A, B] diff --git a/src/library/scala/collection/generic/ImmutableMapTemplate.scala b/src/library/scala/collection/generic/ImmutableMapTemplate.scala index 5600996ae8..cfb602fc21 100644 --- a/src/library/scala/collection/generic/ImmutableMapTemplate.scala +++ b/src/library/scala/collection/generic/ImmutableMapTemplate.scala @@ -31,7 +31,7 @@ trait ImmutableMapTemplate[A, +B, +This <: ImmutableMapTemplate[A, B, This] with extends MapTemplate[A, B, This] { self => - override protected[this] def newBuilder: Builder[(A, B), This, Any] = new ImmutableMapBuilder[A, B, This](empty) + override protected[this] def newBuilder: Builder[(A, B), This] = new ImmutableMapBuilder[A, B, This](empty) /** This function transforms all the values of mappings contained * in this map with function f. diff --git a/src/library/scala/collection/generic/LazyBuilder.scala b/src/library/scala/collection/generic/LazyBuilder.scala index fd9ddd33ef..88d8f8d8c8 100644 --- a/src/library/scala/collection/generic/LazyBuilder.scala +++ b/src/library/scala/collection/generic/LazyBuilder.scala @@ -16,7 +16,7 @@ import mutable.ListBuffer /** A builder that constructs its result lazily. Iterators or iterables to * be added to this builder with `++=` are not evaluated until `result` is called. */ -abstract class LazyBuilder[Elem, +To, -From] extends Builder[Elem, To, From] { +abstract class LazyBuilder[Elem, +To] extends Builder[Elem, To] { /** The different segments of elements to be added to the builder, represented as iterators */ protected var parts = new ListBuffer[Traversable[Elem]] def +=(x: Elem) = { parts += List(x) } diff --git a/src/library/scala/collection/generic/MutableMapBuilder.scala b/src/library/scala/collection/generic/MutableMapBuilder.scala index 04b3066bdb..7e64543214 100644 --- a/src/library/scala/collection/generic/MutableMapBuilder.scala +++ b/src/library/scala/collection/generic/MutableMapBuilder.scala @@ -18,7 +18,7 @@ package scala.collection.generic * @param empty The empty element of the collection. */ class MutableMapBuilder[A, B, Coll <: mutable.Map[A, B] with MapTemplate[A, B, Coll]](empty: Coll) -extends Builder[(A, B), Coll, Any] { +extends Builder[(A, B), Coll] { protected var elems: Coll = empty def +=(x: (A, B)) { elems += x } def clear() { elems = empty } diff --git a/src/library/scala/collection/generic/MutableMapFactory.scala b/src/library/scala/collection/generic/MutableMapFactory.scala index 9c15d5ceec..9b3ccf7221 100644 --- a/src/library/scala/collection/generic/MutableMapFactory.scala +++ b/src/library/scala/collection/generic/MutableMapFactory.scala @@ -4,7 +4,7 @@ package scala.collection.generic */ abstract class MutableMapFactory[CC[A, B] <: mutable.Map[A, B] with MutableMapTemplate[A, B, CC[A, B]]] { - def newBuilder[A, B]: Builder[(A, B), CC[A, B], Any] = new MutableMapBuilder(empty[A, B]) + def newBuilder[A, B]: Builder[(A, B), CC[A, B]] = new MutableMapBuilder(empty[A, B]) def empty[A, B]: CC[A, B] diff --git a/src/library/scala/collection/generic/MutableMapTemplate.scala b/src/library/scala/collection/generic/MutableMapTemplate.scala index 989e29aa0d..fc622ab578 100644 --- a/src/library/scala/collection/generic/MutableMapTemplate.scala +++ b/src/library/scala/collection/generic/MutableMapTemplate.scala @@ -29,13 +29,13 @@ package scala.collection.generic */ trait MutableMapTemplate[A, B, +This <: MutableMapTemplate[A, B, This] with mutable.Map[A, B]] extends MapTemplate[A, B, This] - with Builder[(A, B), This, Any] + with Builder[(A, B), This] with Growable[(A, B)] with Shrinkable[A] with Cloneable[This] { self => - override protected[this] def newBuilder: Builder[(A, B), This, Any] = new MutableMapBuilder[A, B, This](empty.asInstanceOf[This]) // !!! concrete overrides abstract problem + override protected[this] def newBuilder: Builder[(A, B), This] = new MutableMapBuilder[A, B, This](empty.asInstanceOf[This]) // !!! concrete overrides abstract problem /** This method allows one to add a new mapping from key * to value to the map. If the map already contains a diff --git a/src/library/scala/collection/generic/SetBuilder.scala b/src/library/scala/collection/generic/SetBuilder.scala index ab8f1bee73..30456ff38d 100644 --- a/src/library/scala/collection/generic/SetBuilder.scala +++ b/src/library/scala/collection/generic/SetBuilder.scala @@ -18,7 +18,7 @@ package scala.collection.generic * @param empty The empty element of the collection. */ class SetBuilder[A, Coll <: Addable[A, Coll] with Iterable[A] with IterableTemplate[A, Coll]](empty: Coll) -extends Builder[A, Coll, Any] { +extends Builder[A, Coll] { protected var elems: Coll = empty def +=(x: A) { elems = elems + x } def clear() { elems = empty } diff --git a/src/library/scala/collection/generic/SetFactory.scala b/src/library/scala/collection/generic/SetFactory.scala index a2caa99432..ea7bb69192 100644 --- a/src/library/scala/collection/generic/SetFactory.scala +++ b/src/library/scala/collection/generic/SetFactory.scala @@ -4,7 +4,7 @@ package scala.collection.generic */ abstract class SetFactory[CC[A] <: Set[A] with SetTemplate[A, CC[A]]] { - def newBuilder[A]: Builder[A, CC[A], Any] = new AddingBuilder[A, CC[A]](empty[A]) + def newBuilder[A]: Builder[A, CC[A]] = new AddingBuilder[A, CC[A]](empty[A]) def empty[A]: CC[A] diff --git a/src/library/scala/collection/generic/SetTemplate.scala b/src/library/scala/collection/generic/SetTemplate.scala index 865d4a333b..ae339c9077 100644 --- a/src/library/scala/collection/generic/SetTemplate.scala +++ b/src/library/scala/collection/generic/SetTemplate.scala @@ -30,7 +30,7 @@ trait SetTemplate[A, +This <: SetTemplate[A, This] with Set[A]] extends Iterable def empty: This - override protected[this] def newBuilder: Builder[A, This, Any] = new AddingBuilder[A, This](empty) + override protected[this] def newBuilder: Builder[A, This] = new AddingBuilder[A, This](empty) /** Checks if this set contains element elem. * diff --git a/src/library/scala/collection/generic/TraversableFactory.scala b/src/library/scala/collection/generic/TraversableFactory.scala index 244e0859a1..e1d4f4bc24 100644 --- a/src/library/scala/collection/generic/TraversableFactory.scala +++ b/src/library/scala/collection/generic/TraversableFactory.scala @@ -6,7 +6,7 @@ abstract class TraversableFactory[CC[A] <: Traversable[A]] { /** The builder for this kind of collection. */ - def newBuilder[A]: Builder[A, CC[A], Any] + def newBuilder[A]: Builder[A, CC[A]] /** The empty iterable of type CC */ def empty[A]: CC[A] = newBuilder[A].result diff --git a/src/library/scala/collection/generic/TraversableTemplate.scala b/src/library/scala/collection/generic/TraversableTemplate.scala index 7378abda51..95bc524bb4 100644 --- a/src/library/scala/collection/generic/TraversableTemplate.scala +++ b/src/library/scala/collection/generic/TraversableTemplate.scala @@ -31,7 +31,7 @@ self => /** Create a new builder for this traversable type. */ - protected[this] def newBuilder: Builder[A, This, Any] + protected[this] def newBuilder: Builder[A, This] /** Is this collection empty? */ @@ -156,7 +156,7 @@ self => * return a new collection. */ def groupBy[K](f: A => K): Map[K, This] = { - var m = Map[K, Builder[A, This, Any]]() + var m = Map[K, Builder[A, This]]() for (elem <- this) { val key = f(elem) val bldr = m get key match { diff --git a/src/library/scala/collection/generic/TraversableView.scala b/src/library/scala/collection/generic/TraversableView.scala index 19dfc7e447..939dc5b032 100644 --- a/src/library/scala/collection/generic/TraversableView.scala +++ b/src/library/scala/collection/generic/TraversableView.scala @@ -18,7 +18,7 @@ import TraversableView.NoBuilder trait TraversableView[+A, +Coll <: Traversable[_]] extends TraversableViewTemplate[A, Coll, TraversableView[A, Coll]] object TraversableView { - class NoBuilder[A] extends Builder[A, Nothing, TraversableView[_, _]] { + class NoBuilder[A] extends Builder[A, Nothing] { def +=(elem: A) {} def elements: Iterator[A] = Iterator.empty def result() = throw new UnsupportedOperationException("TraversableView.Builder.result") diff --git a/src/library/scala/collection/generic/TraversableViewTemplate.scala b/src/library/scala/collection/generic/TraversableViewTemplate.scala index c235c20360..dd38fe98b8 100644 --- a/src/library/scala/collection/generic/TraversableViewTemplate.scala +++ b/src/library/scala/collection/generic/TraversableViewTemplate.scala @@ -21,7 +21,7 @@ trait TraversableViewTemplate[+A, extends Traversable[A] with TraversableTemplate[A, This] { self => - override protected[this] def newBuilder: Builder[A, This, Any] = + override protected[this] def newBuilder: Builder[A, This] = throw new UnsupportedOperationException(this+".newBuilder") protected def underlying: Coll diff --git a/src/library/scala/collection/immutable/HashMap.scala b/src/library/scala/collection/immutable/HashMap.scala index 1c1cfbe929..6a515e829c 100644 --- a/src/library/scala/collection/immutable/HashMap.scala +++ b/src/library/scala/collection/immutable/HashMap.scala @@ -37,7 +37,7 @@ class HashMap[A, +B] extends Map[A,B] with ImmutableMapTemplate[A, B, HashMap[A, protected var deltaSize: Int = _ override def empty = HashMap.empty[A, B] - override def mapBuilder[A, B]: Builder[(A, B), HashMap[A, B], Any] = HashMap.newBuilder[A, B] + override def mapBuilder[A, B]: Builder[(A, B), HashMap[A, B]] = HashMap.newBuilder[A, B] def get(key: A): Option[B] = synchronized { var m: HashMap[A, _ >: B] = this diff --git a/src/library/scala/collection/immutable/HashSet.scala b/src/library/scala/collection/immutable/HashSet.scala index 281ae45a60..3abffa6ec4 100644 --- a/src/library/scala/collection/immutable/HashSet.scala +++ b/src/library/scala/collection/immutable/HashSet.scala @@ -28,7 +28,7 @@ import generic._ class HashSet[A] extends Set[A] with SetTemplate[A, HashSet[A]] with mutable.FlatHashTable[A] { override def empty = HashSet.empty - override def traversableBuilder[B]: Builder[B, HashSet[B], Any] = HashSet.newBuilder[B] + override def traversableBuilder[B]: Builder[B, HashSet[B]] = HashSet.newBuilder[B] protected var later: HashSet[A] = null protected var changedElem: A = _ diff --git a/src/library/scala/collection/immutable/Iterable.scala b/src/library/scala/collection/immutable/Iterable.scala index 70eea1db11..60f77bdc6f 100644 --- a/src/library/scala/collection/immutable/Iterable.scala +++ b/src/library/scala/collection/immutable/Iterable.scala @@ -11,13 +11,13 @@ import generic._ */ trait Iterable[+A] extends Traversable[A] with collection.Iterable[A] with IterableTemplate[A, Iterable[A]] { self => override protected[this] def newBuilder = Iterable.newBuilder - override def traversableBuilder[B]: Builder[B, Iterable[B], Any] = Iterable.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Iterable[B]] = Iterable.newBuilder[B] } /* A factory object for the trait `Iterable` */ object Iterable extends TraversableFactory[Iterable] { type Coll = Iterable[_] implicit def builderFactory[A]: BuilderFactory[A, Iterable[A], Coll] = new BuilderFactory[A, Iterable[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Iterable[A], Any] = new mutable.ListBuffer + def newBuilder[A]: Builder[A, Iterable[A]] = new mutable.ListBuffer } diff --git a/src/library/scala/collection/immutable/LinearSequence.scala b/src/library/scala/collection/immutable/LinearSequence.scala index 7583c8c27b..36e9a50428 100644 --- a/src/library/scala/collection/immutable/LinearSequence.scala +++ b/src/library/scala/collection/immutable/LinearSequence.scala @@ -7,11 +7,11 @@ import generic._ */ trait LinearSequence[+A] extends Sequence[A] with collection.LinearSequence[A] with LinearSequenceTemplate[A, LinearSequence[A]] { override protected[this] def newBuilder = LinearSequence.newBuilder - override def traversableBuilder[B]: Builder[B, LinearSequence[B], Any] = LinearSequence.newBuilder[B] + override def traversableBuilder[B]: Builder[B, LinearSequence[B]] = LinearSequence.newBuilder[B] } object LinearSequence extends SequenceFactory[LinearSequence] { type Coll = LinearSequence[_] implicit def builderFactory[A]: BuilderFactory[A, LinearSequence[A], Coll] = new BuilderFactory[A, LinearSequence[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, LinearSequence[A], Any] = new mutable.ListBuffer + def newBuilder[A]: Builder[A, LinearSequence[A]] = new mutable.ListBuffer } diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala index 503deecf06..e715fad0fa 100644 --- a/src/library/scala/collection/immutable/List.scala +++ b/src/library/scala/collection/immutable/List.scala @@ -48,7 +48,7 @@ sealed abstract class List[+A] extends LinearSequence[A] with Product with Linea /** Creates a list buffer as builder for this class */ override protected[this] def newBuilder = List.newBuilder - override def traversableBuilder[B]: Builder[B, List[B], Any] = List.newBuilder[B] + override def traversableBuilder[B]: Builder[B, List[B]] = List.newBuilder[B] // New methods in List @@ -490,7 +490,7 @@ object List extends SequenceFactory[List] { 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] } - def newBuilder[A]: Builder[A, List[A], Any] = new ListBuffer[A] + def newBuilder[A]: Builder[A, List[A]] = new ListBuffer[A] override def empty[A]: List[A] = Nil diff --git a/src/library/scala/collection/immutable/ListMap.scala b/src/library/scala/collection/immutable/ListMap.scala index 67fb8f2a25..1451bfef47 100644 --- a/src/library/scala/collection/immutable/ListMap.scala +++ b/src/library/scala/collection/immutable/ListMap.scala @@ -35,7 +35,7 @@ object ListMap extends ImmutableMapFactory[ListMap] { class ListMap[A, +B] extends Map[A, B] with ImmutableMapTemplate[A, B, ListMap[A, B]] { override def empty = ListMap.empty - override def mapBuilder[A, B]: Builder[(A, B), ListMap[A, B], Any] = ListMap.newBuilder[A, B] + override def mapBuilder[A, B]: Builder[(A, B), ListMap[A, B]] = ListMap.newBuilder[A, B] /** Returns the number of mappings in this map. * diff --git a/src/library/scala/collection/immutable/ListSet.scala b/src/library/scala/collection/immutable/ListSet.scala index 9e52b1b93e..f81a1271ed 100644 --- a/src/library/scala/collection/immutable/ListSet.scala +++ b/src/library/scala/collection/immutable/ListSet.scala @@ -41,7 +41,7 @@ class ListSet[A] extends Set[A] with SetTemplate[A, ListSet[A]] { self => override def isEmpty: Boolean = true; override def empty = ListSet.empty - override def traversableBuilder[B]: Builder[B, ListSet[B], Any] = ListSet.newBuilder[B] + override def traversableBuilder[B]: Builder[B, ListSet[B]] = ListSet.newBuilder[B] /** Checks if this set contains element elem. * diff --git a/src/library/scala/collection/immutable/Map.scala b/src/library/scala/collection/immutable/Map.scala index 442a325637..47126df856 100644 --- a/src/library/scala/collection/immutable/Map.scala +++ b/src/library/scala/collection/immutable/Map.scala @@ -18,7 +18,7 @@ trait Map[A, +B] extends Iterable[(A, B)] with ImmutableMapTemplate[A, B, Map[A, B]] { self => override def empty: Map[A, B] = Map.empty - override def mapBuilder[A, B]: Builder[(A, B), Map[A, B], Any] = Map.newBuilder[A, B] + override def mapBuilder[A, B]: Builder[(A, B), Map[A, B]] = Map.newBuilder[A, B] /** Add a key/value pair to this map. * @param key the key diff --git a/src/library/scala/collection/immutable/Sequence.scala b/src/library/scala/collection/immutable/Sequence.scala index 03fe64711a..565937335f 100644 --- a/src/library/scala/collection/immutable/Sequence.scala +++ b/src/library/scala/collection/immutable/Sequence.scala @@ -14,7 +14,7 @@ import generic._ */ trait Sequence[+A] extends Iterable[A] with collection.Sequence[A] with SequenceTemplate[A, Sequence[A]] { override protected[this] def newBuilder = Sequence.newBuilder - override def traversableBuilder[B]: Builder[B, Sequence[B], Any] = Sequence.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Sequence[B]] = Sequence.newBuilder[B] override def hashCode = (Sequence.hashSeed /: this)(_ * 41 + _.hashCode) } @@ -22,5 +22,5 @@ object Sequence extends SequenceFactory[Sequence] { private val hashSeed = "Sequence".hashCode type Coll = Sequence[_] implicit def builderFactory[A]: BuilderFactory[A, Sequence[A], Coll] = new BuilderFactory[A, Sequence[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Sequence[A], Any] = new mutable.ListBuffer + def newBuilder[A]: Builder[A, Sequence[A]] = new mutable.ListBuffer } diff --git a/src/library/scala/collection/immutable/Set.scala b/src/library/scala/collection/immutable/Set.scala index f9f79db632..315f658542 100644 --- a/src/library/scala/collection/immutable/Set.scala +++ b/src/library/scala/collection/immutable/Set.scala @@ -21,7 +21,7 @@ trait Set[A] extends Iterable[A] with collection.Set[A] with SetTemplate[A, Set[ override def hashCode = (Set.hashSeed /: this)(_ * 41 + _.hashCode) - override def traversableBuilder[B]: Builder[B, Set[B], Any] = Set.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Set[B]] = Set.newBuilder[B] } object Set extends SetFactory[Set] { diff --git a/src/library/scala/collection/immutable/SortedMap.scala b/src/library/scala/collection/immutable/SortedMap.scala index 85b01561a7..00970464e6 100644 --- a/src/library/scala/collection/immutable/SortedMap.scala +++ b/src/library/scala/collection/immutable/SortedMap.scala @@ -29,7 +29,7 @@ trait SortedMap[A, +B] extends Map[A, B] override def empty: SortedMap[A, B] = throw new UnsupportedOperationException("SortedMap.empty") /** Needs to be overridden in subclasses. */ - override protected[this] def newBuilder : Builder[(A, B), SortedMap[A, B], Any] = + override protected[this] def newBuilder : Builder[(A, B), SortedMap[A, B]] = throw new UnsupportedOperationException("SortedMap.newBuilder") /** Add a key/value pair to this map. diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala index 31cc0762d3..612978a4b7 100644 --- a/src/library/scala/collection/immutable/Stream.scala +++ b/src/library/scala/collection/immutable/Stream.scala @@ -63,7 +63,7 @@ self => * this builder should be bypassed. */ override protected[this] def newBuilder = Stream.newBuilder - override def traversableBuilder[B]: Builder[B, Stream[B], Any] = Stream.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Stream[B]] = Stream.newBuilder[B] // New methods in Stream @@ -372,13 +372,13 @@ object Stream extends SequenceFactory[Stream] { implicit def builderFactory[A]: BuilderFactory[A, Stream[A], Coll] = new StreamBuilderFactory[A] /** Creates a new builder for a stream */ - def newBuilder[A]: Builder[A, Stream[A], Any] = new StreamBuilder[A] + def newBuilder[A]: Builder[A, Stream[A]] = new StreamBuilder[A] import collection.{Iterable, Sequence, Vector} /** A builder for streams */ - class StreamBuilder[A] extends LazyBuilder[A, Stream[A], Any] { + class StreamBuilder[A] extends LazyBuilder[A, Stream[A]] { def result: Stream[A] = (for (xs <- parts.elements; x <- xs.toIterable.elements) yield x).toStream } diff --git a/src/library/scala/collection/immutable/Traversable.scala b/src/library/scala/collection/immutable/Traversable.scala index 7adc2c3c6c..302115a6d6 100644 --- a/src/library/scala/collection/immutable/Traversable.scala +++ b/src/library/scala/collection/immutable/Traversable.scala @@ -11,14 +11,14 @@ import generic._ */ trait Traversable[+A] extends collection.Traversable[A] with TraversableTemplate[A, Traversable[A]] with Immutable { self => override protected[this] def newBuilder = Traversable.newBuilder - override def traversableBuilder[B]: Builder[B, Traversable[B], Any] = Traversable.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Traversable[B]] = Traversable.newBuilder[B] } /* A factory object for the trait `Traversable` */ object Traversable extends TraversableFactory[Traversable] { type Coll = Traversable[_] implicit def builderFactory[A]: BuilderFactory[A, Traversable[A], Coll] = new BuilderFactory[A, Traversable[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Traversable[A], Any] = new mutable.ListBuffer + def newBuilder[A]: Builder[A, Traversable[A]] = new mutable.ListBuffer } diff --git a/src/library/scala/collection/immutable/TreeMap.scala b/src/library/scala/collection/immutable/TreeMap.scala index d679241b5c..c991b71698 100644 --- a/src/library/scala/collection/immutable/TreeMap.scala +++ b/src/library/scala/collection/immutable/TreeMap.scala @@ -19,7 +19,7 @@ object TreeMap { type Coll = TreeMap[_, _] implicit def builderFactory[A <% Ordered[A], B]: BuilderFactory[(A, B), TreeMap[A, B], Coll] = new BuilderFactory[(A, B), TreeMap[A, B], Coll] { def apply(from: Coll) = newBuilder[A, B] } - def newBuilder[A <% Ordered[A], B]: Builder[(A, B), TreeMap[A, B], Any] = new ImmutableMapBuilder(empty[A, B]) + def newBuilder[A <% Ordered[A], B]: Builder[(A, B), TreeMap[A, B]] = new ImmutableMapBuilder(empty[A, B]) /** The empty map of this type */ def empty[A <% Ordered[A], B] = new TreeMap[A, B] @@ -42,7 +42,7 @@ class TreeMap[A <% Ordered[A], +B](override val size: Int, t: RedBlack[A]#Tree[B with SortedMapTemplate[A, B, TreeMap[A, B]] with ImmutableMapTemplate[A, B, TreeMap[A, B]] { - override protected[this] def newBuilder : Builder[(A, B), TreeMap[A, B], Any] = + override protected[this] def newBuilder : Builder[(A, B), TreeMap[A, B]] = TreeMap.newBuilder[A, B] def isSmaller(x: A, y: A) = x < y diff --git a/src/library/scala/collection/immutable/TreeSet.scala b/src/library/scala/collection/immutable/TreeSet.scala index 49c2578c29..6dd57c43f1 100644 --- a/src/library/scala/collection/immutable/TreeSet.scala +++ b/src/library/scala/collection/immutable/TreeSet.scala @@ -17,8 +17,8 @@ import generic._ object TreeSet { type Coll = TreeSet[_] - implicit def implicitBuilder[A <% Ordered[A]]: Builder[A, TreeSet[A], Coll] = newBuilder[A] - def newBuilder[A <% Ordered[A]]: Builder[A, TreeSet[A], Any] = new AddingBuilder(empty[A]) + implicit def implicitBuilder[A <% Ordered[A]]: Builder[A, TreeSet[A]] = newBuilder[A] + def newBuilder[A <% Ordered[A]]: Builder[A, TreeSet[A]] = new AddingBuilder(empty[A]) /** The empty set of this type */ diff --git a/src/library/scala/collection/immutable/Vector.scala b/src/library/scala/collection/immutable/Vector.scala index 5267683d1f..2fe3f36e67 100644 --- a/src/library/scala/collection/immutable/Vector.scala +++ b/src/library/scala/collection/immutable/Vector.scala @@ -15,7 +15,7 @@ import mutable.ArrayBuffer */ trait Vector[+A] extends Sequence[A] with collection.Vector[A] with VectorTemplate[A, Vector[A]] { self => override protected[this] def newBuilder = Vector.newBuilder - override def traversableBuilder[B]: Builder[B, Vector[B], Any] = Vector.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Vector[B]] = Vector.newBuilder[B] } object Vector extends SequenceFactory[Vector] { @@ -25,5 +25,5 @@ object Vector extends SequenceFactory[Vector] { def apply(idx: Int) = buf.apply(idx) } implicit def builderFactory[A]: BuilderFactory[A, Vector[A], Coll] = new BuilderFactory[A, Vector[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Vector[A], Any] = new ArrayBuffer[A] mapResult (buf => new Impl(buf)) + def newBuilder[A]: Builder[A, Vector[A]] = new ArrayBuffer[A] mapResult (buf => new Impl(buf)) } diff --git a/src/library/scala/collection/mutable/ArrayBuffer.scala b/src/library/scala/collection/mutable/ArrayBuffer.scala index a6e37a1449..8daa796cbc 100644 --- a/src/library/scala/collection/mutable/ArrayBuffer.scala +++ b/src/library/scala/collection/mutable/ArrayBuffer.scala @@ -27,7 +27,7 @@ class ArrayBuffer[A](override protected val initialSize: Int) extends Buffer[A] with BufferTemplate[A, ArrayBuffer[A]] with VectorTemplate[A, ArrayBuffer[A]] - with Builder[A, ArrayBuffer[A], Any] + with Builder[A, ArrayBuffer[A]] with ResizableArray[A] { import collection.Traversable @@ -43,7 +43,7 @@ class ArrayBuffer[A](override protected val initialSize: Int) } override protected[this] def newBuilder = ArrayBuffer.newBuilder - override def traversableBuilder[B]: Builder[B, ArrayBuffer[B], Any] = ArrayBuffer.newBuilder[B] + override def traversableBuilder[B]: Builder[B, ArrayBuffer[B]] = ArrayBuffer.newBuilder[B] /** Appends a single element to this buffer and returns * the identity of the buffer. It takes constant time. @@ -159,6 +159,6 @@ class ArrayBuffer[A](override protected val initialSize: Int) object ArrayBuffer extends SequenceFactory[ArrayBuffer] { type Coll = ArrayBuffer[_] implicit def builderFactory[A]: BuilderFactory[A, ArrayBuffer[A], Coll] = new BuilderFactory[A, ArrayBuffer[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, ArrayBuffer[A], Any] = new ArrayBuffer[A] + def newBuilder[A]: Builder[A, ArrayBuffer[A]] = new ArrayBuffer[A] } diff --git a/src/library/scala/collection/mutable/Buffer.scala b/src/library/scala/collection/mutable/Buffer.scala index e020be6d6f..f2e0997294 100644 --- a/src/library/scala/collection/mutable/Buffer.scala +++ b/src/library/scala/collection/mutable/Buffer.scala @@ -25,13 +25,13 @@ import generic._ @cloneable trait Buffer[A] extends Sequence[A] with BufferTemplate[A, Buffer[A]] { override protected[this] def newBuilder = Buffer.newBuilder - override def traversableBuilder[B]: Builder[B, Buffer[B], Any] = Buffer.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Buffer[B]] = Buffer.newBuilder[B] } /* Factory object for `Buffer` trait */ object Buffer extends SequenceFactory[Buffer] { type Coll = Buffer[_] implicit def builderFactory[A]: BuilderFactory[A, Buffer[A], Coll] = new BuilderFactory[A, Buffer[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Buffer[A], Any] = new ArrayBuffer + def newBuilder[A]: Builder[A, Buffer[A]] = new ArrayBuffer } diff --git a/src/library/scala/collection/mutable/DoubleLinkedList.scala b/src/library/scala/collection/mutable/DoubleLinkedList.scala index 4463ab55a5..1c67e3a413 100644 --- a/src/library/scala/collection/mutable/DoubleLinkedList.scala +++ b/src/library/scala/collection/mutable/DoubleLinkedList.scala @@ -23,13 +23,13 @@ import generic._ @serializable class DoubleLinkedList[A]/*(_elem: A, _next: DoubleLinkedList[A])*/ extends LinearSequence[A] with DoubleLinkedListTemplate[A, DoubleLinkedList[A]] { override protected[this] def newBuilder = DoubleLinkedList.newBuilder - override def traversableBuilder[B]: Builder[B, DoubleLinkedList[B], Any] = DoubleLinkedList.newBuilder[B] + override def traversableBuilder[B]: Builder[B, DoubleLinkedList[B]] = DoubleLinkedList.newBuilder[B] } object DoubleLinkedList extends SequenceFactory[DoubleLinkedList] { type Coll = DoubleLinkedList[_] implicit def builderFactory[A]: BuilderFactory[A, DoubleLinkedList[A], Coll] = new BuilderFactory[A, DoubleLinkedList[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, DoubleLinkedList[A], Any] = null // !!! + def newBuilder[A]: Builder[A, DoubleLinkedList[A]] = null // !!! } diff --git a/src/library/scala/collection/mutable/HashMap.scala b/src/library/scala/collection/mutable/HashMap.scala index 654c6f7529..fef1a6541e 100644 --- a/src/library/scala/collection/mutable/HashMap.scala +++ b/src/library/scala/collection/mutable/HashMap.scala @@ -18,7 +18,7 @@ import generic._ class HashMap[A, B] extends Map[A, B] with MutableMapTemplate[A, B, HashMap[A, B]] with HashTable[A] with DefaultMapModel[A, B] { override def empty: HashMap[A, B] = HashMap.empty[A, B] - override def mapBuilder[A, B]: Builder[(A, B), HashMap[A, B], Any] = HashMap.newBuilder[A, B] + override def mapBuilder[A, B]: Builder[(A, B), HashMap[A, B]] = HashMap.newBuilder[A, B] def -= (key: A) { removeEntry(key) } diff --git a/src/library/scala/collection/mutable/HashSet.scala b/src/library/scala/collection/mutable/HashSet.scala index b849f8f731..d4a2434b43 100644 --- a/src/library/scala/collection/mutable/HashSet.scala +++ b/src/library/scala/collection/mutable/HashSet.scala @@ -23,7 +23,7 @@ import generic._ class HashSet[A] extends Set[A] with SetTemplate[A, HashSet[A]] with FlatHashTable[A] { override def empty = HashSet.empty - override def traversableBuilder[B]: Builder[B, HashSet[B], Any] = HashSet.newBuilder[B] + override def traversableBuilder[B]: Builder[B, HashSet[B]] = HashSet.newBuilder[B] override def size = super.size diff --git a/src/library/scala/collection/mutable/Iterable.scala b/src/library/scala/collection/mutable/Iterable.scala index f45f077cfd..f7896dc3cc 100644 --- a/src/library/scala/collection/mutable/Iterable.scala +++ b/src/library/scala/collection/mutable/Iterable.scala @@ -17,13 +17,13 @@ import generic._ */ trait Iterable[A] extends Traversable[A] with collection.Iterable[A] with IterableTemplate[A, Iterable[A]] { self => override protected[this] def newBuilder = Iterable.newBuilder - override def traversableBuilder[B]: Builder[B, Iterable[B], Any] = Iterable.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Iterable[B]] = Iterable.newBuilder[B] } /* A factory object for the trait `Iterable` */ object Iterable extends TraversableFactory[Iterable] { type Coll = Iterable[_] implicit def builderFactory[A]: BuilderFactory[A, Iterable[A], Coll] = new BuilderFactory[A, Iterable[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Iterable[A], Any] = new ArrayBuffer + def newBuilder[A]: Builder[A, Iterable[A]] = new ArrayBuffer } diff --git a/src/library/scala/collection/mutable/LinearSequence.scala b/src/library/scala/collection/mutable/LinearSequence.scala index 01f38cbe54..60858bcb77 100644 --- a/src/library/scala/collection/mutable/LinearSequence.scala +++ b/src/library/scala/collection/mutable/LinearSequence.scala @@ -7,11 +7,11 @@ import generic._ */ trait LinearSequence[A] extends Sequence[A] with collection.LinearSequence[A] with LinearSequenceTemplate[A, LinearSequence[A]] { override protected[this] def newBuilder = LinearSequence.newBuilder - override def traversableBuilder[B]: Builder[B, LinearSequence[B], Any] = LinearSequence.newBuilder[B] + override def traversableBuilder[B]: Builder[B, LinearSequence[B]] = LinearSequence.newBuilder[B] } object LinearSequence extends SequenceFactory[LinearSequence] { type Coll = LinearSequence[_] implicit def builderFactory[A]: BuilderFactory[A, LinearSequence[A], Coll] = new BuilderFactory[A, LinearSequence[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, LinearSequence[A], Any] = new MutableList[A] + def newBuilder[A]: Builder[A, LinearSequence[A]] = new MutableList[A] } diff --git a/src/library/scala/collection/mutable/LinkedList.scala b/src/library/scala/collection/mutable/LinkedList.scala index cba50294df..47be78a8ed 100644 --- a/src/library/scala/collection/mutable/LinkedList.scala +++ b/src/library/scala/collection/mutable/LinkedList.scala @@ -25,13 +25,13 @@ class LinkedList[A](_elem: A, _next: LinkedList[A]) extends LinearSequence[A] wi elem = _elem next = _next override protected[this] def newBuilder = LinkedList.newBuilder - override def traversableBuilder[B]: Builder[B, LinkedList[B], Any] = LinkedList.newBuilder[B] + override def traversableBuilder[B]: Builder[B, LinkedList[B]] = LinkedList.newBuilder[B] } object LinkedList extends SequenceFactory[LinkedList] { type Coll = LinkedList[_] implicit def builderFactory[A]: BuilderFactory[A, LinkedList[A], Coll] = new BuilderFactory[A, LinkedList[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, LinkedList[A], Any] = (new MutableList) mapResult ((l: MutableList[A]) => l.toLinkedList) + def newBuilder[A]: Builder[A, LinkedList[A]] = (new MutableList) mapResult ((l: MutableList[A]) => l.toLinkedList) } diff --git a/src/library/scala/collection/mutable/ListBuffer.scala b/src/library/scala/collection/mutable/ListBuffer.scala index 5713560ee8..32ce0b4373 100644 --- a/src/library/scala/collection/mutable/ListBuffer.scala +++ b/src/library/scala/collection/mutable/ListBuffer.scala @@ -25,7 +25,7 @@ import generic._ final class ListBuffer[A] extends Buffer[A] with BufferTemplate[A, ListBuffer[A]] - with Builder[A, List[A], Any] + with Builder[A, List[A]] with SequenceForwarder[A] { import collection.Traversable @@ -38,7 +38,7 @@ final class ListBuffer[A] protected def underlying: immutable.Sequence[A] = start override protected[this] def newBuilder = ListBuffer.newBuilder[A] - override def traversableBuilder[B]: Builder[B, ListBuffer[B], Any] = ListBuffer.newBuilder[B] + override def traversableBuilder[B]: Builder[B, ListBuffer[B]] = ListBuffer.newBuilder[B] /** The current length of the buffer */ @@ -320,6 +320,6 @@ final class ListBuffer[A] object ListBuffer extends SequenceFactory[ListBuffer] { type Coll = ListBuffer[_] implicit def builderFactory[A]: BuilderFactory[A, ListBuffer[A], Coll] = new BuilderFactory[A, ListBuffer[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, ListBuffer[A], Any] = new AddingBuilder(new ListBuffer[A]) + def newBuilder[A]: Builder[A, ListBuffer[A]] = new AddingBuilder(new ListBuffer[A]) } diff --git a/src/library/scala/collection/mutable/Map.scala b/src/library/scala/collection/mutable/Map.scala index cfa6ae5f1c..acff09e253 100644 --- a/src/library/scala/collection/mutable/Map.scala +++ b/src/library/scala/collection/mutable/Map.scala @@ -20,7 +20,7 @@ trait Map[A, B] with Unhashable { override def empty: Map[A, B] = Map.empty - override def mapBuilder[A, B]: Builder[(A, B), Map[A, B], Any] = Map.newBuilder[A, B] + override def mapBuilder[A, B]: Builder[(A, B), Map[A, B]] = Map.newBuilder[A, B] /** Return a read-only projection of this map. !!! or just use an (immutable) MapProxy? def readOnly : collection.Map[A, B] = new collection.Map[A, B] { diff --git a/src/library/scala/collection/mutable/MutableList.scala b/src/library/scala/collection/mutable/MutableList.scala index c2ef583b98..2e01c1a153 100644 --- a/src/library/scala/collection/mutable/MutableList.scala +++ b/src/library/scala/collection/mutable/MutableList.scala @@ -24,7 +24,7 @@ import generic._ * @author Martin Odersky * @version 2.8 */ -class MutableList[A] extends LinearSequence[A] with LinearSequenceTemplate[A, MutableList[A]] with Builder[A, MutableList[A], Any] { +class MutableList[A] extends LinearSequence[A] with LinearSequenceTemplate[A, MutableList[A]] with Builder[A, MutableList[A]] { override protected[this] def newBuilder = new MutableList[A] diff --git a/src/library/scala/collection/mutable/ResizableArray.scala b/src/library/scala/collection/mutable/ResizableArray.scala index 0193bdf4b6..9a57904712 100644 --- a/src/library/scala/collection/mutable/ResizableArray.scala +++ b/src/library/scala/collection/mutable/ResizableArray.scala @@ -26,7 +26,7 @@ trait ResizableArray[A] extends Vector[A] with VectorTemplate[A, ResizableArray[ import collection.Iterable // !!! override protected[this] def newBuilder = ResizableArray.newBuilder - override def traversableBuilder[B]: Builder[B, ResizableArray[B], Any] = ResizableArray.newBuilder[B] + override def traversableBuilder[B]: Builder[B, ResizableArray[B]] = ResizableArray.newBuilder[B] protected def initialSize: Int = 16 protected var array: Array[AnyRef] = new Array[AnyRef](initialSize max 1) @@ -117,5 +117,5 @@ trait ResizableArray[A] extends Vector[A] with VectorTemplate[A, ResizableArray[ object ResizableArray extends SequenceFactory[ResizableArray] { type Coll = Vector[_] implicit def builderFactory[A]: BuilderFactory[A, Vector[A], Coll] = new BuilderFactory[A, Vector[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, ResizableArray[A], Any] = new ArrayBuffer[A] + def newBuilder[A]: Builder[A, ResizableArray[A]] = new ArrayBuffer[A] } diff --git a/src/library/scala/collection/mutable/Sequence.scala b/src/library/scala/collection/mutable/Sequence.scala index 04beb61535..efc4092853 100644 --- a/src/library/scala/collection/mutable/Sequence.scala +++ b/src/library/scala/collection/mutable/Sequence.scala @@ -15,7 +15,7 @@ import generic._ */ trait Sequence[A] extends Iterable[A] with collection.Sequence[A] with SequenceTemplate[A, Sequence[A]] with Unhashable { override protected[this] def newBuilder = Sequence.newBuilder - override def traversableBuilder[B]: Builder[B, Sequence[B], Any] = Sequence.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Sequence[B]] = Sequence.newBuilder[B] def update(idx: Int, elem: A) } @@ -23,5 +23,5 @@ trait Sequence[A] extends Iterable[A] with collection.Sequence[A] with SequenceT object Sequence extends SequenceFactory[Sequence] { type Coll = Sequence[_] implicit def builderFactory[A]: BuilderFactory[A, Sequence[A], Coll] = new BuilderFactory[A, Sequence[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Sequence[A], Any] = new ArrayBuffer + def newBuilder[A]: Builder[A, Sequence[A]] = new ArrayBuffer } diff --git a/src/library/scala/collection/mutable/Set.scala b/src/library/scala/collection/mutable/Set.scala index c4b3013ce2..62bf6a6874 100644 --- a/src/library/scala/collection/mutable/Set.scala +++ b/src/library/scala/collection/mutable/Set.scala @@ -34,7 +34,7 @@ self => override def empty = Set.empty - override def traversableBuilder[B]: Builder[B, Set[B], Any] = Set.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Set[B]] = Set.newBuilder[B] /** This method allows one to add or remove an element elem * from this set depending on the value of parameter included. diff --git a/src/library/scala/collection/mutable/StringBuilder.scala b/src/library/scala/collection/mutable/StringBuilder.scala index d70261f84b..da3ebfcc13 100644 --- a/src/library/scala/collection/mutable/StringBuilder.scala +++ b/src/library/scala/collection/mutable/StringBuilder.scala @@ -27,7 +27,7 @@ import scala.runtime.RichString @serializable @SerialVersionUID(0 - 8525408645367278351L) final class StringBuilder(initCapacity: Int, private val initValue: String) - extends Builder[Char, String, Any] + extends Builder[Char, String] with Vector[Char] { require(initCapacity > 0) diff --git a/src/library/scala/collection/mutable/SynchronizedMap.scala b/src/library/scala/collection/mutable/SynchronizedMap.scala index 6292b0daf0..1afc02ed57 100644 --- a/src/library/scala/collection/mutable/SynchronizedMap.scala +++ b/src/library/scala/collection/mutable/SynchronizedMap.scala @@ -23,7 +23,7 @@ trait SynchronizedMap[A, B] extends Map[A, B] { import collection.Traversable - override def mapBuilder[A, B]: Builder[(A, B), SynchronizedMap[A, B], Any] = SynchronizedMap.newBuilder[A, B] + override def mapBuilder[A, B]: Builder[(A, B), SynchronizedMap[A, B]] = SynchronizedMap.newBuilder[A, B] abstract override def size: Int = synchronized { super.size @@ -149,7 +149,7 @@ trait SynchronizedMap[A, B] extends Map[A, B] { */ object SynchronizedMap extends MutableMapFactory[SynchronizedMap] { type Coll = Map[_, _] - implicit def implicitBuilder[A, B]: Builder[(A, B), Map[A, B], Coll] = from.mapBuilder[A, B] + implicit def implicitBuilder[A, B]: Builder[(A, B), Map[A, B]] = from.mapBuilder[A, B] def empty[A, B]: Map[A, B] = new HashMap[A, B] with SynchronizeddMap[A, B] } diff --git a/src/library/scala/collection/mutable/Traversable.scala b/src/library/scala/collection/mutable/Traversable.scala index 1f48205906..72b7271b85 100644 --- a/src/library/scala/collection/mutable/Traversable.scala +++ b/src/library/scala/collection/mutable/Traversable.scala @@ -17,14 +17,14 @@ import generic._ */ trait Traversable[A] extends collection.Traversable[A] with TraversableTemplate[A, Traversable[A]] with Mutable { self => override protected[this] def newBuilder = Traversable.newBuilder - override def traversableBuilder[B]: Builder[B, Traversable[B], Any] = Traversable.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Traversable[B]] = Traversable.newBuilder[B] } /* A factory object for the trait `Traversable` */ object Traversable extends TraversableFactory[Traversable] { type Coll = Traversable[_] implicit def builderFactory[A]: BuilderFactory[A, Traversable[A], Coll] = new BuilderFactory[A, Traversable[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Traversable[A], Any] = new ArrayBuffer + def newBuilder[A]: Builder[A, Traversable[A]] = new ArrayBuffer } diff --git a/src/library/scala/collection/mutable/Vector.scala b/src/library/scala/collection/mutable/Vector.scala index e3178475ad..dae5c4864f 100644 --- a/src/library/scala/collection/mutable/Vector.scala +++ b/src/library/scala/collection/mutable/Vector.scala @@ -14,11 +14,11 @@ import generic._ */ trait Vector[A] extends Sequence[A] with collection.Vector[A] with MutableVectorTemplate[A, Vector[A]] { override protected[this] def newBuilder = Vector.newBuilder - override def traversableBuilder[B]: Builder[B, Vector[B], Any] = Vector.newBuilder[B] + override def traversableBuilder[B]: Builder[B, Vector[B]] = Vector.newBuilder[B] } object Vector extends SequenceFactory[Vector] { type Coll = Vector[_] implicit def builderFactory[A]: BuilderFactory[A, Vector[A], Coll] = new BuilderFactory[A, Vector[A], Coll] { def apply(from: Coll) = from.traversableBuilder[A] } - def newBuilder[A]: Builder[A, Vector[A], Any] = new ArrayBuffer + def newBuilder[A]: Builder[A, Vector[A]] = new ArrayBuffer } diff --git a/src/library/scala/runtime/BoxedArray.scala b/src/library/scala/runtime/BoxedArray.scala index 4bb18f6d31..d390bbd2d3 100644 --- a/src/library/scala/runtime/BoxedArray.scala +++ b/src/library/scala/runtime/BoxedArray.scala @@ -37,7 +37,7 @@ abstract class BoxedArray[A] extends Vector[A] with VectorTemplate[A, BoxedArray * */ override protected[this] def newBuilder = traversableBuilder[A] - override def traversableBuilder[B]: Builder[B, BoxedArray[B], Any] = new ArrayBuffer[B].mapResult { + override def traversableBuilder[B]: Builder[B, BoxedArray[B]] = new ArrayBuffer[B].mapResult { _.toArray.asInstanceOf[BoxedArray[B]] } diff --git a/src/library/scala/runtime/RichString.scala b/src/library/scala/runtime/RichString.scala index 44bf12a4dd..d63ca8607e 100644 --- a/src/library/scala/runtime/RichString.scala +++ b/src/library/scala/runtime/RichString.scala @@ -18,8 +18,7 @@ import collection.immutable.Vector object RichString { -// def newBuilder: Builder[Char, String, Any] = new StringBuilder() - def newBuilder: Builder[Char, RichString, Any] = new StringBuilder() mapResult (new RichString(_)) + def newBuilder: Builder[Char, RichString] = new StringBuilder() mapResult (new RichString(_)) implicit def builderFactory: BuilderFactory[Char, RichString, RichString] = new BuilderFactory[Char, RichString, RichString] { def apply(from: RichString) = newBuilder } implicit def builderFactory2: BuilderFactory[Char, RichString, String] = new BuilderFactory[Char, RichString, String] { def apply(from: String) = newBuilder } diff --git a/src/library/scala/xml/NodeSeq.scala b/src/library/scala/xml/NodeSeq.scala index c6d6625be3..c17b99b2e6 100644 --- a/src/library/scala/xml/NodeSeq.scala +++ b/src/library/scala/xml/NodeSeq.scala @@ -27,7 +27,7 @@ object NodeSeq { } type Coll = NodeSeq implicit def builderFactory: BuilderFactory[Node, NodeSeq, Coll] = new BuilderFactory[Node, NodeSeq, Coll] { def apply(from: Coll) = newBuilder } - def newBuilder: Builder[Node, NodeSeq, Any] = new ListBuffer[Node] mapResult fromSeq + def newBuilder: Builder[Node, NodeSeq] = new ListBuffer[Node] mapResult fromSeq implicit def seqToNodeSeq(s: Seq[Node]): NodeSeq = fromSeq(s) } -- cgit v1.2.3