summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
authorTiark Rompf <tiark.rompf@epfl.ch>2010-04-02 13:11:23 +0000
committerTiark Rompf <tiark.rompf@epfl.ch>2010-04-02 13:11:23 +0000
commitcd51ac694d82c68a5c02f9f20a9460adbac780b4 (patch)
tree32fafdcc00c75f53d98bd4cc84eab13a6585e255 /test/files
parent7b43c30aa1746cb37ee65f2871e4e92e82896a10 (diff)
downloadscala-cd51ac694d82c68a5c02f9f20a9460adbac780b4.tar.gz
scala-cd51ac694d82c68a5c02f9f20a9460adbac780b4.tar.bz2
scala-cd51ac694d82c68a5c02f9f20a9460adbac780b4.zip
closes #3242. review by community.
Diffstat (limited to 'test/files')
-rw-r--r--test/files/run/t3242.check18
-rw-r--r--test/files/run/t3242.scala49
-rw-r--r--test/files/run/t3242b.scala17
3 files changed, 84 insertions, 0 deletions
diff --git a/test/files/run/t3242.check b/test/files/run/t3242.check
new file mode 100644
index 0000000000..a145f6df8f
--- /dev/null
+++ b/test/files/run/t3242.check
@@ -0,0 +1,18 @@
+ append [num: 200] vec
+ remove [num: 200] vec
+ append [num: 400] vec
+ remove [num: 400] vec
+ append [num: 600] vec
+ remove [num: 600] vec
+ append [num: 800] vec
+ remove [num: 800] vec
+>> comparison done, num: 200
+ append [num: 2000] vec
+ remove [num: 2000] vec
+ append [num: 4000] vec
+ remove [num: 4000] vec
+ append [num: 6000] vec
+ remove [num: 6000] vec
+ append [num: 8000] vec
+ remove [num: 8000] vec
+>> comparison done, num: 2000
diff --git a/test/files/run/t3242.scala b/test/files/run/t3242.scala
new file mode 100644
index 0000000000..f8defaa5cd
--- /dev/null
+++ b/test/files/run/t3242.scala
@@ -0,0 +1,49 @@
+object Test {
+
+ def benchmarkA(num: Int) {
+
+ type A = Int
+
+ def updateM[M[_]](ms: M[A], update: (M[A], A)=>M[A]): M[A] = {
+ var is = ms
+ for (i <- 0 until num) is = update(is, i)
+ is
+ }
+
+ //
+ def vectorAppend: Vector[A] = updateM[Vector](Vector(), (as, a)=>{
+ val v = (as :+ a)
+ //println("==>append: i: "+i1+", v: "+v)
+ v
+ })
+ // this will crash, Vector bug!
+ def vectorRemove(vec: Vector[A]): Vector[A] = updateM[Vector](vec, (as, a)=>{
+ val v = (as filterNot{ _ == a})
+ //val v = (is filter{ _ != i})
+ //println("==>remove: i: "+a)
+ v
+ })
+
+ val ct = vectorAppend
+ println(" append [num: "+num+"] vec")
+ vectorRemove(ct)
+ println(" remove [num: "+num+"] vec")
+ } // BenchmarkA
+
+ def comparison(num: Int): Unit = {
+ for (i <- 1 until 5) benchmarkA(num*i)
+ println(">> comparison done, num: "+num);
+ }
+
+ def main(args: Array[String]): Unit = {
+ try {
+ //createBenchmarkA(23).testRun
+
+ comparison(200) // OK
+ comparison(2000) // this will crach
+
+ } catch {
+ case e: Exception => e.printStackTrace()
+ }
+ }
+}
diff --git a/test/files/run/t3242b.scala b/test/files/run/t3242b.scala
new file mode 100644
index 0000000000..7a296aac15
--- /dev/null
+++ b/test/files/run/t3242b.scala
@@ -0,0 +1,17 @@
+import scala.collection.immutable._
+
+object Test {
+
+ def test(n: Int) = {
+ var vb = new VectorBuilder[Int]
+ for (i <- 0 until n)
+ vb += i
+ val v = vb.result
+ assert(v == (0 until n), "not same as (0 until " + n + "): " + v)
+ }
+
+ def main(args: Array[String]): Unit = {
+ for (i <- 0 until 2000)
+ test(i)
+ }
+}