diff options
Diffstat (limited to 'src/library/scalax/runtime/StringVector.scala')
-rw-r--r-- | src/library/scalax/runtime/StringVector.scala | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/library/scalax/runtime/StringVector.scala b/src/library/scalax/runtime/StringVector.scala index ee7a805449..c12243bed7 100644 --- a/src/library/scalax/runtime/StringVector.scala +++ b/src/library/scalax/runtime/StringVector.scala @@ -12,7 +12,7 @@ package scalax.runtime import collection.immutable.Vector -import collection.mutable.{ArrayBuffer, BuilderProxy} +import collection.mutable.ArrayBuffer import collection.generic.covariant.VectorTemplate object StringVector { @@ -22,7 +22,7 @@ object StringVector { } @cloneable -abstract class StringVector[+A] extends VectorTemplate[StringVector, A] with Vector[A] with Boxed[String] { +abstract class StringVector[+A] extends VectorTemplate[StringVector, A] with Vector[A] { /** The length of the string */ def length: Int @@ -31,12 +31,11 @@ abstract class StringVector[+A] extends VectorTemplate[StringVector, A] with Vec def apply(idx: Int): A /** Creates new builder for this collection */ - def newBuilder[B] = new BuilderProxy[StringVector, B] { - val self = new ArrayBuffer[B] - def result: StringVector[B] = new StringVector[B] { - def length = self.length - def apply(n: Int) = self.apply(n) - override def foreach(f: B => Unit) = self.foreach(f) + def newBuilder[B] = new ArrayBuffer[B].mapResult[StringVector] { // !!! Adriaan: can't drop [StringVector] here + buf => new StringVector[B] { + def length = buf.length + def apply(n: Int) = buf.apply(n) + override def foreach(f: B => Unit) = buf.foreach(f) } } |