Skip to content

Commit 39c5d37

Browse files
authored
Merge pull request #7003 from joshlemer/issue/11050-2.13
[11050] ArrayDeque correctly resets with new Array when inserting and resize is necessary
2 parents 8ace59a + 8a08d25 commit 39c5d37

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

src/library/scala/collection/mutable/ArrayDeque.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ class ArrayDeque[A] protected (
138138
copySliceToArray(srcStart = 0, dest = array2, destStart = 0, maxItems = idx)
139139
array2(idx) = elem.asInstanceOf[AnyRef]
140140
copySliceToArray(srcStart = idx, dest = array2, destStart = idx + 1, maxItems = n)
141+
reset(array = array2, start = 0, end = finalLength)
141142
} else if (n <= idx * 2) {
142143
var i = n - 1
143144
while(i >= idx) {

test/junit/scala/collection/mutable/ArrayDequeTest.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,11 @@ class ArrayDequeTest {
7171
val target = Array[Int]()
7272
assertEquals(0, collection.mutable.ArrayDeque(1, 2).copyToArray(target, 1, 0))
7373
}
74+
75+
@Test
76+
def insertsWhenResizeIsNeeded: Unit = {
77+
val arrayDeque = ArrayDeque.from(Array.range(0, 15))
78+
arrayDeque.insert(1, -1)
79+
assertEquals(ArrayDeque(0, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), arrayDeque)
80+
}
7481
}

test/junit/scala/collection/mutable/QueueTest.scala

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ class QueueTest {
3333
@Test
3434
def copyToArrayOutOfBounds: Unit = {
3535
val target = Array[Int]()
36-
assertEquals(0, mutable.Queue(1,2).copyToArray(target, 1, 0))
36+
assertEquals(0, mutable.Queue(1, 2).copyToArray(target, 1, 0))
37+
}
38+
39+
@Test
40+
def insertsWhenResizeIsNeeded: Unit = {
41+
val q = Queue.from(Array.range(0, 15))
42+
q.insert(1, -1)
43+
assertEquals(Queue(0, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), q)
3744
}
3845
}

test/junit/scala/collection/mutable/StackTest.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,11 @@ class StackTest {
1515
val s2: Stack[Int] = s1.reverse
1616
assertEquals("Stack", s2.collectionClassName)
1717
}
18+
19+
@Test
20+
def insertsWhenResizeIsNeeded: Unit = {
21+
val stack = Stack.from(Array.range(0, 15))
22+
stack.insert(1, -1)
23+
assertEquals(Stack(0, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), stack)
24+
}
1825
}

0 commit comments

Comments
 (0)