From b0c36c7a7c646caf95c7cda4a91681d243a0508d Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Tue, 24 Jun 2008 12:45:25 +0000 Subject: lazy vals cannot override strict vals and vice ... lazy vals cannot override strict vals and vice versa; fixed initialization bugs that caused scala and fsc to fail. --- test/files/neg/lazyvals.scala | 20 ++++++++++++++++++++ test/files/run/lazy-override.check | 4 ++-- test/files/run/lazy-override.scala | 7 ++----- 3 files changed, 24 insertions(+), 7 deletions(-) (limited to 'test') diff --git a/test/files/neg/lazyvals.scala b/test/files/neg/lazyvals.scala index 8514d42c13..f92534f506 100644 --- a/test/files/neg/lazyvals.scala +++ b/test/files/neg/lazyvals.scala @@ -24,3 +24,23 @@ class Lazy { // no lazy modifiers in class parameters class A(lazy val obj: Object) {} } + +object T2 { + class A { + val x: Int = { print("/*A.x*/"); 2 } + lazy val y: Int = { print("/*A.y*/"); 2 } + } + + + class B extends A { + // lazy overrides strict val + override lazy val x: Int = { print("/*B.x*/"); 3 } + // strict val overrides lazy + override val y: Int = { print("/*B.y*/"); 3 } + } +} + + + + + diff --git a/test/files/run/lazy-override.check b/test/files/run/lazy-override.check index 225a9b120d..a8f658d7b5 100644 --- a/test/files/run/lazy-override.check +++ b/test/files/run/lazy-override.check @@ -1,3 +1,3 @@ -/*A.x*/a.x=2 -/*A.x*//*B.y*/b.x=/*B.x*/3 +a.x=/*A.x*/2 +b.x=/*B.x*/3 b.z=/*B.z/3 diff --git a/test/files/run/lazy-override.scala b/test/files/run/lazy-override.scala index 0b72f60f03..e5884257a8 100644 --- a/test/files/run/lazy-override.scala +++ b/test/files/run/lazy-override.scala @@ -1,15 +1,12 @@ class A { - val x: Int = { print("/*A.x*/"); 2 } + lazy val x: Int = { print("/*A.x*/"); 2 } lazy val y: Int = { print("/*A.y*/"); 2 } lazy val z: Int = { print("/*A.z*/"); 2 } } class B extends A { - // lazy overrides strict val override lazy val x: Int = { print("/*B.x*/"); 3 } - // strict val overrides lazy - override val y: Int = { print("/*B.y*/"); 3 } - // lazy overrides lazy + override lazy val y: Int = { print("/*B.y*/"); 3 } override lazy val z: Int = { print("/*B.z/"); 3 } } -- cgit v1.2.3