diff options
author | Paul Phillips <paulp@improving.org> | 2011-03-27 19:46:12 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-03-27 19:46:12 +0000 |
commit | c17e46682a9b42eaf4d33d9f60b50c826ab4009e (patch) | |
tree | 2c18c246de913d41b513354d5f3785693a2cd699 /src/library/scala/collection/mutable/DoubleLinkedList.scala | |
parent | fbdda78887e6dc594d08bf2376d0bba164d14009 (diff) | |
download | scala-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.scala | 18 |
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 } } |