summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/mutable/DoubleLinkedList.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-03-27 19:46:12 +0000
committerPaul Phillips <paulp@improving.org>2011-03-27 19:46:12 +0000
commitc17e46682a9b42eaf4d33d9f60b50c826ab4009e (patch)
tree2c18c246de913d41b513354d5f3785693a2cd699 /src/library/scala/collection/mutable/DoubleLinkedList.scala
parentfbdda78887e6dc594d08bf2376d0bba164d14009 (diff)
downloadscala-c17e46682a9b42eaf4d33d9f60b50c826ab4009e.tar.gz
scala-c17e46682a9b42eaf4d33d9f60b50c826ab4009e.tar.bz2
scala-c17e46682a9b42eaf4d33d9f60b50c826ab4009e.zip
Fix for linked lists closes #4080 and proves my...
Fix for linked lists closes #4080 and proves my desire not to ship obviously broken code is even greater than my will to hold out for any help. I threw in a free fix for this which I noticed while in there. scala> scala.collection.mutable.LinkedList[Int]().head res0: Int = 0 Also was reminded how useless tests can be: val ten = DoubleLinkedList(1 to 10: _*) ten.insert(DoubleLinkedList(11)) // Post-insert position test require(ten.last == 11) Fortunately a test confirming buggy behavior still serves a purpose by breaking when you fix the bug which allowed it to pass, thus letting you fix the broken test too. Life's (very) little compensations. Linked list code should still be presumed broken. No review.
Diffstat (limited to 'src/library/scala/collection/mutable/DoubleLinkedList.scala')
-rw-r--r--src/library/scala/collection/mutable/DoubleLinkedList.scala18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/library/scala/collection/mutable/DoubleLinkedList.scala b/src/library/scala/collection/mutable/DoubleLinkedList.scala
index f2a732ffd1..4465ebef93 100644
--- a/src/library/scala/collection/mutable/DoubleLinkedList.scala
+++ b/src/library/scala/collection/mutable/DoubleLinkedList.scala
@@ -68,24 +68,22 @@ class DoubleLinkedList[A]() extends LinearSeq[A]
object DoubleLinkedList extends SeqFactory[DoubleLinkedList] {
/** $genericCanBuildFrom */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, DoubleLinkedList[A]] = new GenericCanBuildFrom[A]
+
def newBuilder[A]: Builder[A, DoubleLinkedList[A]] =
new Builder[A, DoubleLinkedList[A]] {
- var current: DoubleLinkedList[A] = _
- val emptyList = new DoubleLinkedList[A]()
- if(null == current)
- current = emptyList
+ def emptyList() = new DoubleLinkedList[A]()
+ var current = emptyList()
def +=(elem: A): this.type = {
- if (current.nonEmpty)
- current.insert(new DoubleLinkedList(elem, emptyList))
+ if (current.isEmpty)
+ current = new DoubleLinkedList(elem, emptyList())
else
- current = new DoubleLinkedList(elem, emptyList)
+ current append new DoubleLinkedList(elem, emptyList())
+
this
}
- def clear() {
- current = emptyList
- }
+ def clear(): Unit = current = emptyList()
def result() = current
}
}