aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-24 11:12:34 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-30 14:26:06 +0200
commita274d8dfc86d95e359c45e8f13db58983a2f041b (patch)
tree3188c51369118a6a1afc6cd4805e5018b268da2f /src
parent9c150c572ee7bb308e87cf4f0ae51a6fef22c00b (diff)
downloaddotty-a274d8dfc86d95e359c45e8f13db58983a2f041b.tar.gz
dotty-a274d8dfc86d95e359c45e8f13db58983a2f041b.tar.bz2
dotty-a274d8dfc86d95e359c45e8f13db58983a2f041b.zip
Generate getters for modules in LV.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/transform/LazyVals.scala11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/transform/LazyVals.scala b/src/dotty/tools/dotc/transform/LazyVals.scala
index 160333fdf..8fb47f416 100644
--- a/src/dotty/tools/dotc/transform/LazyVals.scala
+++ b/src/dotty/tools/dotc/transform/LazyVals.scala
@@ -48,8 +48,11 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer {
else {
if (tree.symbol is Flags.Module) {
val field = ctx.newSymbol(tree.symbol.owner, tree.symbol.name ++ StdNames.nme.MODULE_VAR_SUFFIX, containerFlags, tree.symbol.info.resultType, coord = tree.symbol.pos)
- tpd.This(tree.symbol.enclosingClass.asClass).select(defn.Object_synchronized).appliedTo(
- mkDefNonThreadSafeNonNullable(field, tree.rhs).ensureConforms(tree.tpe.widen.resultType.widen))
+ val getter =
+ tpd.DefDef(tree.symbol.asTerm, tpd.This(tree.symbol.enclosingClass.asClass).select(defn.Object_synchronized).appliedTo(
+ mkDefNonThreadSafeNonNullable(field, tree.rhs).ensureConforms(tree.tpe.widen.resultType.widen)))
+ val fieldVal = tpd.ValDef(field.asTerm, initValue(field.info.widen))
+ Thicket(fieldVal, getter)
} else {
val isField = tree.symbol.owner.isClass
@@ -105,8 +108,8 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer {
val flag = ref(holderSymbol).select("initialized".toTermName)
val initer = valueInitter.changeOwner(x.symbol, initSymbol)
val initBody =
- ref(holderSymbol).select(defn.Object_synchronized).appliedToType(tpe).appliedTo(
- mkNonThreadSafeDef(result, flag, initer).ensureConforms(tpe))
+ ref(holderSymbol).select(defn.Object_synchronized).appliedTo(
+ mkNonThreadSafeDef(result, flag, initer)).ensureConforms(tpe)
val initTree = DefDef(initSymbol, initBody)
val holderTree = ValDef(holderSymbol, New(holderImpl.typeRef, List()))
val methodBody = {