summaryrefslogtreecommitdiff
path: root/test/files/run/lazy-locals.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2007-06-27 14:26:47 +0000
committerIulian Dragos <jaguarul@gmail.com>2007-06-27 14:26:47 +0000
commitb4b91dcb58b5804f7ec1513e8f4d1e4534fd8018 (patch)
tree758a2817dd728101980c7ffc3f206d484ad77ba0 /test/files/run/lazy-locals.scala
parenta1ec75c2642396a83854510ba7e88d8a302a67fd (diff)
downloadscala-b4b91dcb58b5804f7ec1513e8f4d1e4534fd8018.tar.gz
scala-b4b91dcb58b5804f7ec1513e8f4d1e4534fd8018.tar.bz2
scala-b4b91dcb58b5804f7ec1513e8f4d1e4534fd8018.zip
Merged lazy values branch to trunk.
Diffstat (limited to 'test/files/run/lazy-locals.scala')
-rw-r--r--test/files/run/lazy-locals.scala143
1 files changed, 143 insertions, 0 deletions
diff --git a/test/files/run/lazy-locals.scala b/test/files/run/lazy-locals.scala
new file mode 100644
index 0000000000..937b5a80c0
--- /dev/null
+++ b/test/files/run/lazy-locals.scala
@@ -0,0 +1,143 @@
+
+object Test extends Application {
+
+ lazy val w = 10
+
+ /** normal test */
+ def testLazy = {
+ lazy val t = { Console.println("forced lazy val t"); 42 }
+ lazy val p = t / 2
+ lazy val q = { println("forced lazy val q"); 10}
+ println("q = " + q)
+ println("p = " + p)
+ 1 + t + t
+ }
+
+ /** test 32 lazy vals, which fills one bitmap int. */
+ def testLazy32 = {
+ lazy val t00 = { Console.println("forced lazy val t00"); 0 }
+ lazy val t01 = { Console.println("forced lazy val t01"); 1 }
+ lazy val t02 = { Console.println("forced lazy val t02"); 2 }
+ lazy val t03 = { Console.println("forced lazy val t03"); 3 }
+ lazy val t04 = { Console.println("forced lazy val t04"); 4 }
+ lazy val t05 = { Console.println("forced lazy val t05"); 5 }
+ lazy val t06 = { Console.println("forced lazy val t06"); 6 }
+ lazy val t07 = { Console.println("forced lazy val t07"); 7 }
+ lazy val t08 = { Console.println("forced lazy val t08"); 8 }
+ lazy val t09 = { Console.println("forced lazy val t09"); 9 }
+ lazy val t10 = { Console.println("forced lazy val t10"); 10 }
+ lazy val t11 = { Console.println("forced lazy val t11"); 11 }
+ lazy val t12 = { Console.println("forced lazy val t12"); 12 }
+ lazy val t13 = { Console.println("forced lazy val t13"); 13 }
+ lazy val t14 = { Console.println("forced lazy val t14"); 14 }
+ lazy val t15 = { Console.println("forced lazy val t15"); 15 }
+ lazy val t16 = { Console.println("forced lazy val t16"); 16 }
+ lazy val t17 = { Console.println("forced lazy val t17"); 17 }
+ lazy val t18 = { Console.println("forced lazy val t18"); 18 }
+ lazy val t19 = { Console.println("forced lazy val t19"); 19 }
+ lazy val t20 = { Console.println("forced lazy val t20"); 20 }
+ lazy val t21 = { Console.println("forced lazy val t21"); 21 }
+ lazy val t22 = { Console.println("forced lazy val t22"); 22 }
+ lazy val t23 = { Console.println("forced lazy val t23"); 23 }
+ lazy val t24 = { Console.println("forced lazy val t24"); 24 }
+ lazy val t25 = { Console.println("forced lazy val t25"); 25 }
+ lazy val t26 = { Console.println("forced lazy val t26"); 26 }
+ lazy val t27 = { Console.println("forced lazy val t27"); 27 }
+ lazy val t28 = { Console.println("forced lazy val t28"); 28 }
+ lazy val t29 = { Console.println("forced lazy val t29"); 29 }
+ lazy val t30 = { Console.println("forced lazy val t30"); 30 }
+ lazy val t31 = { Console.println("forced lazy val t31"); 31 }
+
+ val sum = t31 + t30 + t29 + t28 + t27 + t26 + t25 + t24 + t23 +
+ t22 + t21 + t20 + t19 + t18 + t17 + t16 + t15 + t14 +
+ t13 + t12 + t11 + t10 + t09 + t08 + t07 + t06 + t05 +
+ t04 + t03 + t02 + t01 + t00;
+ println("Sum is: " + sum);
+ }
+
+ /** test 32 lazy vals, which needs two bitmap ints. */
+ def testLazy33 = {
+ lazy val t00 = { Console.println("forced lazy val t00"); 0 }
+ lazy val t01 = { Console.println("forced lazy val t01"); 1 }
+ lazy val t02 = { Console.println("forced lazy val t02"); 2 }
+ lazy val t03 = { Console.println("forced lazy val t03"); 3 }
+ lazy val t04 = { Console.println("forced lazy val t04"); 4 }
+ lazy val t05 = { Console.println("forced lazy val t05"); 5 }
+ lazy val t06 = { Console.println("forced lazy val t06"); 6 }
+ lazy val t07 = { Console.println("forced lazy val t07"); 7 }
+ lazy val t08 = { Console.println("forced lazy val t08"); 8 }
+ lazy val t09 = { Console.println("forced lazy val t09"); 9 }
+ lazy val t10 = { Console.println("forced lazy val t10"); 10 }
+ lazy val t11 = { Console.println("forced lazy val t11"); 11 }
+ lazy val t12 = { Console.println("forced lazy val t12"); 12 }
+ lazy val t13 = { Console.println("forced lazy val t13"); 13 }
+ lazy val t14 = { Console.println("forced lazy val t14"); 14 }
+ lazy val t15 = { Console.println("forced lazy val t15"); 15 }
+ lazy val t16 = { Console.println("forced lazy val t16"); 16 }
+ lazy val t17 = { Console.println("forced lazy val t17"); 17 }
+ lazy val t18 = { Console.println("forced lazy val t18"); 18 }
+ lazy val t19 = { Console.println("forced lazy val t19"); 19 }
+ lazy val t20 = { Console.println("forced lazy val t20"); 20 }
+ lazy val t21 = { Console.println("forced lazy val t21"); 21 }
+ lazy val t22 = { Console.println("forced lazy val t22"); 22 }
+ lazy val t23 = { Console.println("forced lazy val t23"); 23 }
+ lazy val t24 = { Console.println("forced lazy val t24"); 24 }
+ lazy val t25 = { Console.println("forced lazy val t25"); 25 }
+ lazy val t26 = { Console.println("forced lazy val t26"); 26 }
+ lazy val t27 = { Console.println("forced lazy val t27"); 27 }
+ lazy val t28 = { Console.println("forced lazy val t28"); 28 }
+ lazy val t29 = { Console.println("forced lazy val t29"); 29 }
+ lazy val t30 = { Console.println("forced lazy val t30"); 30 }
+ lazy val t31 = { Console.println("forced lazy val t31"); 31 }
+ lazy val t32 = { Console.println("forced lazy val t32"); 32 }
+
+ val sum = t32 + t31 + t30 + t29 + t28 + t27 + t26 + t25 + t24 + t23 +
+ t22 + t21 + t20 + t19 + t18 + t17 + t16 + t15 + t14 +
+ t13 + t12 + t11 + t10 + t09 + t08 + t07 + t06 + t05 +
+ t04 + t03 + t02 + t01 + t00;
+ println("Sum is: " + sum);
+ }
+
+
+ /** test recursive method with lazy vals and a single forced */
+ def testLazyRec(n: Int): Int = {
+ lazy val t = { println("forced lazy val t at n = " + n); 42 }
+ if (n > 0)
+ testLazyRec(n - 1)
+ else
+ t
+ }
+
+ /** test recursive method with lazy vals and a all vals forced */
+ def testLazyRecMany(n: Int): Int = {
+ lazy val t = { println("forced lazy val t at n = " + n); 42 }
+ if (n > 0) {
+ testLazyRecMany(n - 1);
+ t*t
+ } else
+ t
+ }
+
+ def testRecVal {
+ lazy val twos: List[Int] = 2 :: twos
+ lazy val ones: Stream[Int] = Stream.cons(1, ones)
+
+ println("First 5 elements of ones: " + ones.take(5).toList)
+ }
+
+ // should compile without error
+ def testMutualRecVal {
+ lazy val odd: Int = 1 + even
+ lazy val even: Int = 1 + odd
+
+ ()
+ }
+
+ println(testLazy)
+ testLazy32
+ testLazy33
+ println(testLazyRec(5))
+ println(testLazyRecMany(5))
+ testRecVal
+
+}