diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2007-06-27 14:26:47 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2007-06-27 14:26:47 +0000 |
commit | b4b91dcb58b5804f7ec1513e8f4d1e4534fd8018 (patch) | |
tree | 758a2817dd728101980c7ffc3f206d484ad77ba0 /test/files | |
parent | a1ec75c2642396a83854510ba7e88d8a302a67fd (diff) | |
download | scala-b4b91dcb58b5804f7ec1513e8f4d1e4534fd8018.tar.gz scala-b4b91dcb58b5804f7ec1513e8f4d1e4534fd8018.tar.bz2 scala-b4b91dcb58b5804f7ec1513e8f4d1e4534fd8018.zip |
Merged lazy values branch to trunk.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/neg/lazyvals.check | 25 | ||||
-rw-r--r-- | test/files/neg/lazyvals.scala | 26 | ||||
-rw-r--r-- | test/files/run/bug603.scala | 4 | ||||
-rw-r--r-- | test/files/run/lazy-exprs.check | 10 | ||||
-rw-r--r-- | test/files/run/lazy-exprs.scala | 84 | ||||
-rw-r--r-- | test/files/run/lazy-locals.check | 82 | ||||
-rw-r--r-- | test/files/run/lazy-locals.scala | 143 | ||||
-rw-r--r-- | test/files/run/lazy-traits.check | 154 | ||||
-rw-r--r-- | test/files/run/lazy-traits.scala | 133 |
9 files changed, 659 insertions, 2 deletions
diff --git a/test/files/neg/lazyvals.check b/test/files/neg/lazyvals.check new file mode 100644 index 0000000000..c4daf9d842 --- /dev/null +++ b/test/files/neg/lazyvals.check @@ -0,0 +1,25 @@ +lazyvals.scala:6: error: lazy values may not be abstract + lazy val t: Int + ^ +lazyvals.scala:9: error: lazy not allowed here. Only vals can be lazy + lazy var p: Int = 100 + ^ +lazyvals.scala:12: error: lazy not allowed here. Only vals can be lazy + lazy def q: Double = 0.0 + ^ +lazyvals.scala:15: error: '=' expected but ';' found. + lazy val t; + ^ +lazyvals.scala:20: error: lazy not allowed here. Only vals can be lazy + lazy trait T {} + ^ +lazyvals.scala:21: error: lazy not allowed here. Only vals can be lazy + lazy class C {} + ^ +lazyvals.scala:22: error: lazy not allowed here. Only vals can be lazy + lazy object O {} + ^ +lazyvals.scala:25: error: lazy modifier not allowed here. Use call-by-name parameters instead + class A(lazy val obj: Object) {} + ^ +8 errors found diff --git a/test/files/neg/lazyvals.scala b/test/files/neg/lazyvals.scala new file mode 100644 index 0000000000..8514d42c13 --- /dev/null +++ b/test/files/neg/lazyvals.scala @@ -0,0 +1,26 @@ + +/** Test which should fail compilation */ +class Lazy { + + // no abstract lazy values + lazy val t: Int + + // no lazy var + lazy var p: Int = 100 + + // no lazy defs + lazy def q: Double = 0.0 + + def foo { + lazy val t; + () + } + + // no trait/class/object can be lazy + lazy trait T {} + lazy class C {} + lazy object O {} + + // no lazy modifiers in class parameters + class A(lazy val obj: Object) {} +} 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) +} |