From 622c15815f8cfa93ab6c3b0e3ab49095988dd51f Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Tue, 27 Apr 2010 15:09:00 +0000 Subject: Fixed construction of specialized classes in th... Fixed construction of specialized classes in the presence of side-effects and non-trivial initializers. Review by odersky. --- test/files/run/spec-init.scala | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/files/run/spec-init.scala (limited to 'test/files/run/spec-init.scala') diff --git a/test/files/run/spec-init.scala b/test/files/run/spec-init.scala new file mode 100644 index 0000000000..630f03ac7a --- /dev/null +++ b/test/files/run/spec-init.scala @@ -0,0 +1,41 @@ +class Foo[@specialized(Int) T](_x: T) { + val x = _x + def bar {} + + val y = x + println(x) + println(y) + println(z) + + def baz {} + val z = y + +} + +class Bar[@specialized(Int) T] { + def foo(x: T) = print(x) +} + +object Global { + var msg = "ok" +} + +class TouchGlobal[@specialized(Int) T](_x: T) { + println(Global.msg) + val x = { + Global.msg = "not ok" + _x + } +} + +object Test { + def main(args: Array[String]) { + (new Foo(new Object)) + println("shouldn't see two initialized values and one uninitialized") + (new Foo(42)) + + (new TouchGlobal(new Object)) + Global.msg = "ok" // reset the value + (new TouchGlobal(42)) + } +} -- cgit v1.2.3