summaryrefslogtreecommitdiff
path: root/test/files/run
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
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')
-rw-r--r--test/files/run/bug603.scala4
-rw-r--r--test/files/run/lazy-exprs.check10
-rw-r--r--test/files/run/lazy-exprs.scala84
-rw-r--r--test/files/run/lazy-locals.check82
-rw-r--r--test/files/run/lazy-locals.scala143
-rw-r--r--test/files/run/lazy-traits.check154
-rw-r--r--test/files/run/lazy-traits.scala133
7 files changed, 608 insertions, 2 deletions
diff --git a/test/files/run/bug603.scala b/test/files/run/bug603.scala
index c1e0aace12..361cef1f41 100644
--- a/test/files/run/bug603.scala
+++ b/test/files/run/bug603.scala
@@ -1,4 +1,4 @@
-object lazy {
+object forceDelay {
class Susp[+A](lazyValue: => A) extends Function0[A] {
private var func: () => Any = () => lazyValue
private var value: Any = null
@@ -21,7 +21,7 @@ object lazy {
}
object Test {
- import lazy._
+ import forceDelay._
def main(args: Array[String]) = {
val s: Susp[Int] = delay { Console.println("evaluating..."); 3 }
diff --git a/test/files/run/lazy-exprs.check b/test/files/run/lazy-exprs.check
new file mode 100644
index 0000000000..2aaa0be3f6
--- /dev/null
+++ b/test/files/run/lazy-exprs.check
@@ -0,0 +1,10 @@
+forced <z1>
+lazy val in scrutinee: ok
+forced <z1>
+lazy val in case: ok
+lazy val in case: forced <z1>
+ok
+lazy val in if condition: forced <z1>
+ok
+lazy val in pattern: forced LazyField
+ok
diff --git a/test/files/run/lazy-exprs.scala b/test/files/run/lazy-exprs.scala
new file mode 100644
index 0000000000..307915bcac
--- /dev/null
+++ b/test/files/run/lazy-exprs.scala
@@ -0,0 +1,84 @@
+object TestExpressions {
+
+ def patmatchScrut {
+ lazy val z1: Option[String] = { println("forced <z1>"); Some("lazy z1") }
+
+ val res = z1 match {
+ case Some(msg) => msg
+ case None => "failed"
+ }
+ print("lazy val in scrutinee: ")
+ if (res == "lazy z1")
+ println("ok")
+ else
+ println("failed")
+ }
+
+ def patmatchCase {
+ val t: Option[String] = Some("test")
+ val res = t match {
+ case Some(msg) =>
+ lazy val z1 = { println("forced <z1>"); "lazy z1" }
+ z1
+
+ case None => "failed"
+ }
+ print("lazy val in case: ")
+ if (res == "lazy z1")
+ println("ok")
+ else
+ println("failed")
+ }
+
+
+ def patmatchPat {
+ lazy val Z1 = { println("forced <z1>"); "lazy Z1" }
+ print("lazy val in case: ")
+ val t: Option[String] = Some("lazy Z1")
+ t match {
+ case Some(Z1) =>
+ println("ok")
+
+ case None =>
+ println("failed")
+ }
+ }
+
+ def ifcond {
+ lazy val z1 = { println("forced <z1>"); "lazy z1" }
+ print("lazy val in if condition: ")
+ if (z1 == "lazy z1")
+ println("ok")
+ else
+ println("failed")
+ }
+
+
+ lazy val LazyField = { println("forced LazyField"); "LazyField" }
+
+ def testPatMatchField {
+ print("lazy val in pattern: ")
+ val t: Option[String] = Some("LazyField")
+ t match {
+ case Some(LazyField) =>
+ println("ok")
+
+ case None =>
+ println("failed")
+ }
+ }
+
+ def test {
+ patmatchScrut
+ patmatchCase
+ patmatchPat
+ ifcond
+ testPatMatchField
+ }
+}
+
+
+object Test extends Application {
+
+ TestExpressions.test
+}
diff --git a/test/files/run/lazy-locals.check b/test/files/run/lazy-locals.check
new file mode 100644
index 0000000000..7f65cd3db2
--- /dev/null
+++ b/test/files/run/lazy-locals.check
@@ -0,0 +1,82 @@
+forced lazy val q
+q = 10
+forced lazy val t
+p = 21
+85
+forced lazy val t31
+forced lazy val t30
+forced lazy val t29
+forced lazy val t28
+forced lazy val t27
+forced lazy val t26
+forced lazy val t25
+forced lazy val t24
+forced lazy val t23
+forced lazy val t22
+forced lazy val t21
+forced lazy val t20
+forced lazy val t19
+forced lazy val t18
+forced lazy val t17
+forced lazy val t16
+forced lazy val t15
+forced lazy val t14
+forced lazy val t13
+forced lazy val t12
+forced lazy val t11
+forced lazy val t10
+forced lazy val t09
+forced lazy val t08
+forced lazy val t07
+forced lazy val t06
+forced lazy val t05
+forced lazy val t04
+forced lazy val t03
+forced lazy val t02
+forced lazy val t01
+forced lazy val t00
+Sum is: 496
+forced lazy val t32
+forced lazy val t31
+forced lazy val t30
+forced lazy val t29
+forced lazy val t28
+forced lazy val t27
+forced lazy val t26
+forced lazy val t25
+forced lazy val t24
+forced lazy val t23
+forced lazy val t22
+forced lazy val t21
+forced lazy val t20
+forced lazy val t19
+forced lazy val t18
+forced lazy val t17
+forced lazy val t16
+forced lazy val t15
+forced lazy val t14
+forced lazy val t13
+forced lazy val t12
+forced lazy val t11
+forced lazy val t10
+forced lazy val t09
+forced lazy val t08
+forced lazy val t07
+forced lazy val t06
+forced lazy val t05
+forced lazy val t04
+forced lazy val t03
+forced lazy val t02
+forced lazy val t01
+forced lazy val t00
+Sum is: 528
+forced lazy val t at n = 0
+42
+forced lazy val t at n = 0
+forced lazy val t at n = 1
+forced lazy val t at n = 2
+forced lazy val t at n = 3
+forced lazy val t at n = 4
+forced lazy val t at n = 5
+1764
+First 5 elements of ones: List(1, 1, 1, 1, 1)
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
+
+}
diff --git a/test/files/run/lazy-traits.check b/test/files/run/lazy-traits.check
new file mode 100644
index 0000000000..dcc8228ac1
--- /dev/null
+++ b/test/files/run/lazy-traits.check
@@ -0,0 +1,154 @@
+Cls test:
+<forced z1>
+z1 = lazy z1
+z1 = lazy z1
+z1 = lazy z1
+Cls2 test:
+<forced z1>
+<forced z2>
+z1 = lazy z1 z2 = lazy z2
+z1 = lazy z1 z2 = lazy z2
+z1 = lazy z1 z2 = lazy z2
+Cls with B test:
+<forced z1>
+<forced zb1>
+<forced zc1>
+z1 = lazy z1 zb1 = lazy zb1 zc1 = lazy zc1
+z1 = lazy z1 zb1 = lazy zb1 zc1 = lazy zc1
+z1 = lazy z1 zb1 = lazy zb1 zc1 = lazy zc1
+OverflownLazyFields with A test:
+<forced zc00>
+<forced zc01>
+<forced zc02>
+<forced zc03>
+<forced zc04>
+<forced zc05>
+<forced zc06>
+<forced zc07>
+<forced zc08>
+<forced zc09>
+<forced zc10>
+<forced zc11>
+<forced zc12>
+<forced zc13>
+<forced zc14>
+<forced zc15>
+<forced zc16>
+<forced zc17>
+<forced zc18>
+<forced zc19>
+<forced zc20>
+<forced zc21>
+<forced zc22>
+<forced zc23>
+<forced zc24>
+<forced zc25>
+<forced zc26>
+<forced zc27>
+<forced zc28>
+<forced zc29>
+<forced zc30>
+<forced zc31>
+<forced z1>
+
+zc00 = lazy zc00
+zc01 = lazy zc01
+zc02 = lazy zc02
+zc03 = lazy zc03
+zc04 = lazy zc04
+zc05 = lazy zc05
+zc06 = lazy zc06
+zc07 = lazy zc07
+zc08 = lazy zc08
+zc09 = lazy zc09
+zc10 = lazy zc10
+zc11 = lazy zc11
+zc12 = lazy zc12
+zc13 = lazy zc13
+zc14 = lazy zc14
+zc15 = lazy zc15
+zc16 = lazy zc16
+zc17 = lazy zc17
+zc18 = lazy zc18
+zc19 = lazy zc19
+zc20 = lazy zc20
+zc21 = lazy zc21
+zc22 = lazy zc22
+zc23 = lazy zc23
+zc24 = lazy zc24
+zc25 = lazy zc25
+zc26 = lazy zc26
+zc27 = lazy zc27
+zc28 = lazy zc28
+zc29 = lazy zc29
+zc30 = lazy zc30
+zc31 = lazy zc31
+z1 = lazy z1
+
+zc00 = lazy zc00
+zc01 = lazy zc01
+zc02 = lazy zc02
+zc03 = lazy zc03
+zc04 = lazy zc04
+zc05 = lazy zc05
+zc06 = lazy zc06
+zc07 = lazy zc07
+zc08 = lazy zc08
+zc09 = lazy zc09
+zc10 = lazy zc10
+zc11 = lazy zc11
+zc12 = lazy zc12
+zc13 = lazy zc13
+zc14 = lazy zc14
+zc15 = lazy zc15
+zc16 = lazy zc16
+zc17 = lazy zc17
+zc18 = lazy zc18
+zc19 = lazy zc19
+zc20 = lazy zc20
+zc21 = lazy zc21
+zc22 = lazy zc22
+zc23 = lazy zc23
+zc24 = lazy zc24
+zc25 = lazy zc25
+zc26 = lazy zc26
+zc27 = lazy zc27
+zc28 = lazy zc28
+zc29 = lazy zc29
+zc30 = lazy zc30
+zc31 = lazy zc31
+z1 = lazy z1
+
+zc00 = lazy zc00
+zc01 = lazy zc01
+zc02 = lazy zc02
+zc03 = lazy zc03
+zc04 = lazy zc04
+zc05 = lazy zc05
+zc06 = lazy zc06
+zc07 = lazy zc07
+zc08 = lazy zc08
+zc09 = lazy zc09
+zc10 = lazy zc10
+zc11 = lazy zc11
+zc12 = lazy zc12
+zc13 = lazy zc13
+zc14 = lazy zc14
+zc15 = lazy zc15
+zc16 = lazy zc16
+zc17 = lazy zc17
+zc18 = lazy zc18
+zc19 = lazy zc19
+zc20 = lazy zc20
+zc21 = lazy zc21
+zc22 = lazy zc22
+zc23 = lazy zc23
+zc24 = lazy zc24
+zc25 = lazy zc25
+zc26 = lazy zc26
+zc27 = lazy zc27
+zc28 = lazy zc28
+zc29 = lazy zc29
+zc30 = lazy zc30
+zc31 = lazy zc31
+z1 = lazy z1
diff --git a/test/files/run/lazy-traits.scala b/test/files/run/lazy-traits.scala
new file mode 100644
index 0000000000..f91da7ed1a
--- /dev/null
+++ b/test/files/run/lazy-traits.scala
@@ -0,0 +1,133 @@
+trait A {
+ lazy val z1 = {
+ println("<forced z1>")
+ "lazy z1"
+ }
+}
+
+/** Simple class which mixes in one lazy val. */
+class Cls extends AnyRef with A {
+ override def toString =
+ "z1 = " + z1
+}
+
+/** Own lazy val + one mixed in. */
+class Cls2 extends AnyRef with A {
+ lazy val z2 = {
+ println("<forced z2>")
+ "lazy z2"
+ }
+
+ override def toString =
+ "z1 = " + z1 + " z2 = " + z2
+}
+
+trait B extends A {
+ lazy val zb1 = {
+ println("<forced zb1>")
+ "lazy zb1"
+ }
+}
+
+class ClsB extends Object with B {
+ lazy val zc1 = {
+ println("<forced zc1>")
+ "lazy zc1"
+ }
+ override def toString =
+ "z1 = " + z1 + " zb1 = " + zb1 + " zc1 = " + zc1
+}
+
+/** Class with 32 lazy fields mixes in one more. */
+class OverflownLazyFields extends Object with A {
+ lazy val zc00 = { println("<forced zc00>"); "lazy zc00" }
+ lazy val zc01 = { println("<forced zc01>"); "lazy zc01" }
+ lazy val zc02 = { println("<forced zc02>"); "lazy zc02" }
+ lazy val zc03 = { println("<forced zc03>"); "lazy zc03" }
+ lazy val zc04 = { println("<forced zc04>"); "lazy zc04" }
+ lazy val zc05 = { println("<forced zc05>"); "lazy zc05" }
+ lazy val zc06 = { println("<forced zc06>"); "lazy zc06" }
+ lazy val zc07 = { println("<forced zc07>"); "lazy zc07" }
+ lazy val zc08 = { println("<forced zc08>"); "lazy zc08" }
+ lazy val zc09 = { println("<forced zc09>"); "lazy zc09" }
+ lazy val zc10 = { println("<forced zc10>"); "lazy zc10" }
+ lazy val zc11 = { println("<forced zc11>"); "lazy zc11" }
+ lazy val zc12 = { println("<forced zc12>"); "lazy zc12" }
+ lazy val zc13 = { println("<forced zc13>"); "lazy zc13" }
+ lazy val zc14 = { println("<forced zc14>"); "lazy zc14" }
+ lazy val zc15 = { println("<forced zc15>"); "lazy zc15" }
+ lazy val zc16 = { println("<forced zc16>"); "lazy zc16" }
+ lazy val zc17 = { println("<forced zc17>"); "lazy zc17" }
+ lazy val zc18 = { println("<forced zc18>"); "lazy zc18" }
+ lazy val zc19 = { println("<forced zc19>"); "lazy zc19" }
+ lazy val zc20 = { println("<forced zc20>"); "lazy zc20" }
+ lazy val zc21 = { println("<forced zc21>"); "lazy zc21" }
+ lazy val zc22 = { println("<forced zc22>"); "lazy zc22" }
+ lazy val zc23 = { println("<forced zc23>"); "lazy zc23" }
+ lazy val zc24 = { println("<forced zc24>"); "lazy zc24" }
+ lazy val zc25 = { println("<forced zc25>"); "lazy zc25" }
+ lazy val zc26 = { println("<forced zc26>"); "lazy zc26" }
+ lazy val zc27 = { println("<forced zc27>"); "lazy zc27" }
+ lazy val zc28 = { println("<forced zc28>"); "lazy zc28" }
+ lazy val zc29 = { println("<forced zc29>"); "lazy zc29" }
+ lazy val zc30 = { println("<forced zc30>"); "lazy zc30" }
+ lazy val zc31 = { println("<forced zc31>"); "lazy zc31" }
+
+ override def toString =
+ "\nzc00 = " + zc00 +
+ "\nzc01 = " + zc01 +
+ "\nzc02 = " + zc02 +
+ "\nzc03 = " + zc03 +
+ "\nzc04 = " + zc04 +
+ "\nzc05 = " + zc05 +
+ "\nzc06 = " + zc06 +
+ "\nzc07 = " + zc07 +
+ "\nzc08 = " + zc08 +
+ "\nzc09 = " + zc09 +
+ "\nzc10 = " + zc10 +
+ "\nzc11 = " + zc11 +
+ "\nzc12 = " + zc12 +
+ "\nzc13 = " + zc13 +
+ "\nzc14 = " + zc14 +
+ "\nzc15 = " + zc15 +
+ "\nzc16 = " + zc16 +
+ "\nzc17 = " + zc17 +
+ "\nzc18 = " + zc18 +
+ "\nzc19 = " + zc19 +
+ "\nzc20 = " + zc20 +
+ "\nzc21 = " + zc21 +
+ "\nzc22 = " + zc22 +
+ "\nzc23 = " + zc23 +
+ "\nzc24 = " + zc24 +
+ "\nzc25 = " + zc25 +
+ "\nzc26 = " + zc26 +
+ "\nzc27 = " + zc27 +
+ "\nzc28 = " + zc28 +
+ "\nzc29 = " + zc29 +
+ "\nzc30 = " + zc30 +
+ "\nzc31 = " + zc31 +
+ "\nz1 = " + z1
+}
+
+trait PrivateLazy {
+ private lazy val str = "z1"
+}
+
+/** Test successful compilation. */
+class InheritPrivateLazy extends AnyRef with PrivateLazy {}
+
+
+object Test extends Application {
+
+ def test(name: String, v: A) {
+ println(name + " test:")
+ println(v)
+ println(v)
+ println(v)
+ }
+
+ test("Cls", new Cls)
+ test("Cls2", new Cls2)
+ test("Cls with B", new ClsB)
+ test("OverflownLazyFields with A", new OverflownLazyFields)
+}