Skip to content

Commit 96cd350

Browse files
committed
Module vals are lazy
Should have lazy flag set, otherwise forward reference checking would fail for modules. Note: LazyVals needed to be disabled because it also should transform module vals, but didn't do this so far because it only tested the Lazy flag. It turned out the module val transformation exposed some bugs in lazy vals in that LazyVals creates symbols as a side effect and enters them into scopes. Such mutations are allowed onyl in very specific cases (essentially only for local throw-away scopes).
1 parent 57c6c85 commit 96cd350

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/dotty/tools/dotc/Compiler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class Compiler {
2626
List(new ExtensionMethods),
2727
List(new TailRec),
2828
List(new PatternMatcher,
29-
new LazyValTranformContext().transformer,
29+
// new LazyValTranformContext().transformer, // disabled, awaiting fixes
3030
new Splitter),
3131
List(new Nullarify,
3232
new TypeTestsCasts,

src/dotty/tools/dotc/core/Flags.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ object Flags {
444444
final val RetainedTypeArgFlags = VarianceFlags | ExpandedName | Protected | Local
445445

446446
/** Modules always have these flags set */
447-
final val ModuleCreationFlags = ModuleVal | Final | Stable
447+
final val ModuleCreationFlags = ModuleVal | Lazy | Final | Stable
448448

449449
/** Module classes always have these flags set */
450450
final val ModuleClassCreationFlags = ModuleClass | Final

0 commit comments

Comments
 (0)