From 610fdb6b5ae6e6a7b74681f0623aefb937952cfe Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Wed, 22 Dec 2010 11:29:12 +0000 Subject: Fix 'Symbol.companionModule' for the resident m... Fix 'Symbol.companionModule' for the resident mode compiler. It was confused by having modules being translated to lazy values. The direct consequence was a crash in the build manager when looking at a constructor using a default argument (compiled separately), but only on the second run. The resident compiler may run many times over, and symbols may be reused. Therefore, a module symbol that has been translated to a lazy val by refchecks is not guaranteed to have MODULE set on the next run (even before refcheck). Flags are not part of symbol history. Instead we rely on the fact that a synthetic lazy value must have been a module. review by odersky. --- test/files/buildmanager/namesdefaults/defparam-use.scala | 5 +++++ test/files/buildmanager/namesdefaults/defparam.scala | 7 +++++++ test/files/buildmanager/namesdefaults/namesdefaults.check | 9 +++++++++ test/files/buildmanager/namesdefaults/namesdefaults.test | 3 +++ 4 files changed, 24 insertions(+) create mode 100644 test/files/buildmanager/namesdefaults/defparam-use.scala create mode 100644 test/files/buildmanager/namesdefaults/defparam.scala create mode 100644 test/files/buildmanager/namesdefaults/namesdefaults.check create mode 100644 test/files/buildmanager/namesdefaults/namesdefaults.test (limited to 'test/files/buildmanager/namesdefaults') diff --git a/test/files/buildmanager/namesdefaults/defparam-use.scala b/test/files/buildmanager/namesdefaults/defparam-use.scala new file mode 100644 index 0000000000..a8a2a9f445 --- /dev/null +++ b/test/files/buildmanager/namesdefaults/defparam-use.scala @@ -0,0 +1,5 @@ + +object Test extends Application { + val outer = new Outer + new outer.Inner +} diff --git a/test/files/buildmanager/namesdefaults/defparam.scala b/test/files/buildmanager/namesdefaults/defparam.scala new file mode 100644 index 0000000000..d817c719ab --- /dev/null +++ b/test/files/buildmanager/namesdefaults/defparam.scala @@ -0,0 +1,7 @@ +class Outer { + + class Inner(val x: List[Int] = Nil) + +// lazy val Inner = "abc" +} + diff --git a/test/files/buildmanager/namesdefaults/namesdefaults.check b/test/files/buildmanager/namesdefaults/namesdefaults.check new file mode 100644 index 0000000000..f713d9dead --- /dev/null +++ b/test/files/buildmanager/namesdefaults/namesdefaults.check @@ -0,0 +1,9 @@ +builder > defparam.scala defparam-use.scala +compiling Set(defparam-use.scala, defparam.scala) +Changes: Map() +builder > defparam-use.scala +compiling Set(defparam-use.scala) +Changes: Map(class Test$delayedInit$body -> List(Changed(Definition(Test$delayedInit$body.))[constructor Test$delayedInit$body changed from ($outer: object Test) to ($outer: object Test)Test$delayedInit$body flags: ], Changed(Definition(Test.delayedInit$body.))[constructor delayedInit$body changed from ($outer: object Test) to ($outer: object Test)Test#delayedInit$body flags: ]), object Test -> List()) +builder > defparam-use.scala +compiling Set(defparam-use.scala) +Changes: Map(class Test$delayedInit$body -> List(Changed(Definition(Test$delayedInit$body.))[constructor Test$delayedInit$body changed from ($outer: object Test) to ($outer: object Test)Test$delayedInit$body flags: ], Changed(Definition(Test.delayedInit$body.))[constructor delayedInit$body changed from ($outer: object Test) to ($outer: object Test)Test#delayedInit$body flags: ]), object Test -> List()) diff --git a/test/files/buildmanager/namesdefaults/namesdefaults.test b/test/files/buildmanager/namesdefaults/namesdefaults.test new file mode 100644 index 0000000000..84ccc36bc3 --- /dev/null +++ b/test/files/buildmanager/namesdefaults/namesdefaults.test @@ -0,0 +1,3 @@ +>>compile defparam.scala defparam-use.scala +>>compile defparam-use.scala +>>compile defparam-use.scala -- cgit v1.2.3