summaryrefslogtreecommitdiff
path: root/test/files/run/t3242.scala
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/run/t3242.scala
parent7b43c30aa1746cb37ee65f2871e4e92e82896a10 (diff)
downloadscala-cd51ac694d82c68a5c02f9f20a9460adbac780b4.tar.gz
scala-cd51ac694d82c68a5c02f9f20a9460adbac780b4.tar.bz2
scala-cd51ac694d82c68a5c02f9f20a9460adbac780b4.zip
closes #3242. review by community.
Diffstat (limited to 'test/files/run/t3242.scala')
-rw-r--r--test/files/run/t3242.scala49
1 files changed, 49 insertions, 0 deletions
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()
+ }
+ }
+}