summaryrefslogtreecommitdiff
path: root/test/disabled/run/forvaleq.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-05-09 03:53:41 +0000
committerPaul Phillips <paulp@improving.org>2009-05-09 03:53:41 +0000
commit2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2 (patch)
tree9bb2044c595fe260c352a00cf98bb2ecece50437 /test/disabled/run/forvaleq.scala
parentf7ab13b08e085c3bf94d857fc9648ee724e4cb08 (diff)
downloadscala-2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2.tar.gz
scala-2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2.tar.bz2
scala-2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2.zip
Organized disabled directory so it works with p...
Organized disabled directory so it works with partest. You can run ./partest --srcpath disabled to run the tests in that location. Fixed a few tests in disabled and pending and moved to files.
Diffstat (limited to 'test/disabled/run/forvaleq.scala')
-rw-r--r--test/disabled/run/forvaleq.scala92
1 files changed, 92 insertions, 0 deletions
diff --git a/test/disabled/run/forvaleq.scala b/test/disabled/run/forvaleq.scala
new file mode 100644
index 0000000000..1e4fd33dbc
--- /dev/null
+++ b/test/disabled/run/forvaleq.scala
@@ -0,0 +1,92 @@
+// test "foo = expr" clauses in for comprehensions
+// $Id$
+
+import scala.collection.immutable.Queue
+import scala.{List=>L}
+
+object Test {
+ // redefine some symbols to make it extra hard
+ class List
+ class Tuple2
+ def List[A](as: A*) = 5
+
+ def firstDigit(x: Int): Int =
+ x match {
+ case 0 => 0
+ case _ if (x<0) => firstDigit(-x)
+ case _ if (x<10) => x
+ case _ => firstDigit(x / 10)
+ }
+
+
+ {
+ // a basic test case
+
+ val input = L.range(0,20)
+ val oddFirstTimesTwo =
+ for {x <- input
+ xf = firstDigit(x)
+ if xf % 2 == 1}
+ yield x*2
+ println(oddFirstTimesTwo)
+ }
+
+ {
+ // a test case with patterns
+
+ val input = L.range(0, 20)
+ val oddFirstTimesTwo =
+ for {x <- input
+ xf = firstDigit(x)
+ yf = x - firstDigit(x) / 10
+ (a, b) = (xf - yf, xf + yf)
+ if xf % 2 == 1}
+ yield a + b
+ println(oddFirstTimesTwo)
+ }
+
+ {
+ // make sure it works on non-Ls
+
+ // val input: Queue = Queue.Empty[int].incl(L.range(0,20))
+ val input = L.range(0, 20).elements
+ val oddFirstTimesTwo =
+ for {x <- input
+ xf = firstDigit(x)
+ if xf % 2 == 1}
+ yield x*2
+ println(oddFirstTimesTwo.toList)
+ }
+
+ {
+ // yield the computed value
+
+ val input = L.range(0,20)
+ val oddFirstTimesTwo =
+ for {x <- input
+ xf = firstDigit(x)
+ if xf % 2 == 1}
+ yield xf*2
+ println(oddFirstTimesTwo)
+ }
+
+ {
+ // make sure the function is only called once
+ var count: Int = 0
+
+ def fdct(x: Int) = {
+ count += 1
+ firstDigit(x)
+ }
+
+ val input = L.range(0,20)
+ for {x <- input
+ xf = fdct(x)
+ if xf % 2 == 1}
+ yield xf
+
+ println("called " + count + " times")
+ }
+
+ def main(args: Array[String]) {}
+}