diff options
author | Paul Phillips <paulp@improving.org> | 2010-09-18 17:54:12 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-09-18 17:54:12 +0000 |
commit | 76ce74d7aefda96f6148e2e4b50f3c815dd3c076 (patch) | |
tree | 13ac5ea3e6f4babd0a1a3d6da6505daea3e1f285 /src/library | |
parent | bece2590efabb3156ec89f7e31fd11d7eafdddc8 (diff) | |
download | scala-76ce74d7aefda96f6148e2e4b50f3c815dd3c076.tar.gz scala-76ce74d7aefda96f6148e2e4b50f3c815dd3c076.tar.bz2 scala-76ce74d7aefda96f6148e2e4b50f3c815dd3c076.zip |
Fixed an issue with ListSet getting confused ab...
Fixed an issue with ListSet getting confused about what goes forward and
what goes backward. No review.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/collection/immutable/ListSet.scala | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/library/scala/collection/immutable/ListSet.scala b/src/library/scala/collection/immutable/ListSet.scala index 136a57c680..cea4d20595 100644 --- a/src/library/scala/collection/immutable/ListSet.scala +++ b/src/library/scala/collection/immutable/ListSet.scala @@ -31,9 +31,11 @@ object ListSet extends ImmutableSetFactory[ListSet] { * temporary space cost, but it's improbable a list backed set could * become large enough for this to matter given its pricy element lookup. */ - class ListSetBuilder[Elem] extends Builder[Elem, ListSet[Elem]] { - protected val elems = new mutable.ListBuffer[Elem] - protected val seen = new mutable.HashSet[Elem] + class ListSetBuilder[Elem](initial: ListSet[Elem]) extends Builder[Elem, ListSet[Elem]] { + def this() = this(empty[Elem]) + protected val elems = new mutable.ListBuffer[Elem] ++= initial reverse + protected val seen = new mutable.HashSet[Elem] ++= initial + def +=(x: Elem): this.type = { if (!seen(x)) { elems += x @@ -97,7 +99,7 @@ class ListSet[A] extends Set[A] */ override def ++(xs: TraversableOnce[A]): ListSet[A] = if (xs.isEmpty) this - else newBuilder ++= this ++= xs result + else new ListSet.ListSetBuilder(this) ++= xs result private[ListSet] def unchecked_+(e: A): ListSet[A] = new Node(e) private[ListSet] def unchecked_outer: ListSet[A] = |