summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/collection/mutable/LinkedHashMap.scala1
-rw-r--r--src/library/scala/collection/mutable/LinkedHashSet.scala1
-rw-r--r--test/junit/scala/collection/mutable/LinkedHashMapTest.scala25
-rw-r--r--test/junit/scala/collection/mutable/LinkedHashSetTest.scala25
4 files changed, 52 insertions, 0 deletions
diff --git a/src/library/scala/collection/mutable/LinkedHashMap.scala b/src/library/scala/collection/mutable/LinkedHashMap.scala
index b64504be3d..275f490675 100644
--- a/src/library/scala/collection/mutable/LinkedHashMap.scala
+++ b/src/library/scala/collection/mutable/LinkedHashMap.scala
@@ -160,6 +160,7 @@ class LinkedHashMap[A, B] extends AbstractMap[A, B]
override def clear() {
clearTable()
firstEntry = null
+ lastEntry = null
}
private def writeObject(out: java.io.ObjectOutputStream) {
diff --git a/src/library/scala/collection/mutable/LinkedHashSet.scala b/src/library/scala/collection/mutable/LinkedHashSet.scala
index 1768c946ed..756a2f73c1 100644
--- a/src/library/scala/collection/mutable/LinkedHashSet.scala
+++ b/src/library/scala/collection/mutable/LinkedHashSet.scala
@@ -112,6 +112,7 @@ class LinkedHashSet[A] extends AbstractSet[A]
override def clear() {
clearTable()
firstEntry = null
+ lastEntry = null
}
private def writeObject(out: java.io.ObjectOutputStream) {
diff --git a/test/junit/scala/collection/mutable/LinkedHashMapTest.scala b/test/junit/scala/collection/mutable/LinkedHashMapTest.scala
new file mode 100644
index 0000000000..37dcd028a5
--- /dev/null
+++ b/test/junit/scala/collection/mutable/LinkedHashMapTest.scala
@@ -0,0 +1,25 @@
+package scala.collection.mutable
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.{ Assert, Test }
+
+import scala.collection.mutable
+
+/* Test for SI-9095 */
+@RunWith(classOf[JUnit4])
+class LinkedHashMapTest {
+ class TestClass extends mutable.LinkedHashMap[String, Int] {
+ def lastItemRef = lastEntry
+ }
+
+ @Test
+ def testClear: Unit = {
+ val lhm = new TestClass
+ Seq("a" -> 8, "b" -> 9).foreach(kv => lhm.put(kv._1, kv._2))
+
+ Assert.assertNotNull(lhm.lastItemRef)
+ lhm.clear()
+ Assert.assertNull(lhm.lastItemRef)
+ }
+}
diff --git a/test/junit/scala/collection/mutable/LinkedHashSetTest.scala b/test/junit/scala/collection/mutable/LinkedHashSetTest.scala
new file mode 100644
index 0000000000..b419ad37ec
--- /dev/null
+++ b/test/junit/scala/collection/mutable/LinkedHashSetTest.scala
@@ -0,0 +1,25 @@
+package scala.collection.mutable
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.{ Assert, Test }
+
+import scala.collection.mutable
+
+/* Test for SI-9095 */
+@RunWith(classOf[JUnit4])
+class LinkedHashSetTest {
+ class TestClass extends mutable.LinkedHashSet[String] {
+ def lastItemRef = lastEntry
+ }
+
+ @Test
+ def testClear: Unit = {
+ val lhs = new TestClass
+ Seq("a", "b").foreach(k => lhs.add(k))
+
+ Assert.assertNotNull(lhs.lastItemRef)
+ lhs.clear()
+ Assert.assertNull(lhs.lastItemRef)
+ }
+}