Skip to content

Commit 394da59

Browse files
committed
Merge pull request scala#3213 from Ichoran/issue/8014
Fixes SI-8014, regression in Vector ++ TraversableOnce.
2 parents f9a3b82 + 03bf97e commit 394da59

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

src/library/scala/collection/immutable/Vector.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ override def companion: GenericCompanion[Vector] = Vector
227227
val ri = this.reverseIterator
228228
while (ri.hasNext) v = ri.next +: v
229229
v.asInstanceOf[That]
230-
case _ => super.++(that)
230+
case _ => super.++(again)
231231
}
232232
}
233233
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package scala.collection.mutable
2+
3+
import org.junit.runner.RunWith
4+
import org.junit.runners.JUnit4
5+
import org.junit.Test
6+
import scala.collection.mutable
7+
8+
@RunWith(classOf[JUnit4])
9+
/* Test for SI-8014 and ++ in general */
10+
class VectorTest {
11+
val noVec = Vector.empty[Int]
12+
val smallVec = Vector.range(0,3)
13+
val bigVec = Vector.range(0,64)
14+
val smsm = Vector.tabulate(2 * smallVec.length)(i => (i % smallVec.length))
15+
val smbig = Vector.tabulate(smallVec.length + bigVec.length)(i =>
16+
if (i < smallVec.length) i else i - smallVec.length
17+
)
18+
val bigsm = Vector.tabulate(smallVec.length + bigVec.length)(i =>
19+
if (i < bigVec.length) i else i - bigVec.length
20+
)
21+
val bigbig = Vector.tabulate(2 * bigVec.length)(i => (i % bigVec.length))
22+
23+
24+
val vecs = List(noVec, smallVec, bigVec)
25+
val ans = List(
26+
vecs,
27+
List(smallVec, smsm, smbig),
28+
List(bigVec, bigsm, bigbig)
29+
)
30+
31+
@Test
32+
def vectorCat() {
33+
val cats = vecs.map(a => vecs.map(a ++ _))
34+
assert( cats == ans )
35+
}
36+
37+
@Test
38+
def iteratorCat() {
39+
def its = vecs.map(_.toList.toIterator)
40+
val cats = vecs.map(a => its.map(a ++ _))
41+
println(cats)
42+
assert( cats == ans )
43+
}
44+
45+
@Test
46+
def arrayCat() {
47+
val ars = vecs.map(_.toArray)
48+
val cats = vecs.map(a => ars.map(a ++ _))
49+
assert( cats == ans )
50+
}
51+
}

0 commit comments

Comments
 (0)