diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-04-28 10:45:54 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-04-30 14:26:09 +0200 |
commit | 52c56a275561cd43e7ed06a2bc70084e87d1b18e (patch) | |
tree | f6c55b19c0618723a0cfabe18e4aad553be233f0 /src | |
parent | 4a379ecc5f3d75b6c09370290a4025233dcb806d (diff) | |
download | dotty-52c56a275561cd43e7ed06a2bc70084e87d1b18e.tar.gz dotty-52c56a275561cd43e7ed06a2bc70084e87d1b18e.tar.bz2 dotty-52c56a275561cd43e7ed06a2bc70084e87d1b18e.zip |
LazyVals: eagerly enter private symbols.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/transform/LazyVals.scala | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/transform/LazyVals.scala b/src/dotty/tools/dotc/transform/LazyVals.scala index b10e08a96..151eb5192 100644 --- a/src/dotty/tools/dotc/transform/LazyVals.scala +++ b/src/dotty/tools/dotc/transform/LazyVals.scala @@ -172,7 +172,7 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer { val containerSymbol = ctx.newSymbol(claz, containerName, x.symbol.flags &~ containerFlagsMask | containerFlags | Flags.Private, tpe, coord = x.symbol.coord - ).enteredAfter(this) + ).entered val containerTree = ValDef(containerSymbol, initValue(tpe)) if (x.tpe.isNotNull && tpe <:< defn.ObjectType) { // can use 'null' value instead of flag @@ -312,7 +312,7 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer { } else { // need to create a new flag offsetSymbol = ctx.newSymbol(companion.moduleClass, (StdNames.nme.LAZY_FIELD_OFFSET + id.toString).toTermName, Flags.Synthetic, defn.LongType).enteredAfter(this) val flagName = (StdNames.nme.BITMAP_PREFIX + id.toString).toTermName - val flagSymbol = ctx.newSymbol(claz, flagName, containerFlags, defn.LongType).enteredAfter(this) + val flagSymbol = ctx.newSymbol(claz, flagName, containerFlags, defn.LongType).entered flag = ValDef(flagSymbol, Literal(Constants.Constant(0L))) val offsetTree = ValDef(offsetSymbol, getOffset.appliedTo(thizClass, Literal(Constant(flagName.toString)))) info.defs = offsetTree :: info.defs @@ -321,17 +321,17 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer { case None => offsetSymbol = ctx.newSymbol(companion.moduleClass, (StdNames.nme.LAZY_FIELD_OFFSET + "0").toTermName, Flags.Synthetic, defn.LongType).enteredAfter(this) val flagName = (StdNames.nme.BITMAP_PREFIX + "0").toTermName - val flagSymbol = ctx.newSymbol(claz, flagName, containerFlags, defn.LongType).enteredAfter(this) + val flagSymbol = ctx.newSymbol(claz, flagName, containerFlags, defn.LongType).entered flag = ValDef(flagSymbol, Literal(Constants.Constant(0L))) val offsetTree = ValDef(offsetSymbol, getOffset.appliedTo(thizClass, Literal(Constant(flagName.toString)))) - appendOffsetDefs += (companion.name.moduleClassName -> new OffsetInfo(List(offsetTree), ord)) + appendOffsetDefs += (companion.moduleClass -> new OffsetInfo(List(offsetTree), ord)) } val containerName = ctx.freshName(x.name ++ StdNames.nme.LAZY_LOCAL).toTermName - val containerSymbol = ctx.newSymbol(claz, containerName, (x.mods &~ containerFlagsMask | containerFlags).flags, tpe, coord = x.symbol.coord).enteredAfter(this) + val containerSymbol = ctx.newSymbol(claz, containerName, (x.mods &~ containerFlagsMask | containerFlags).flags, tpe, coord = x.symbol.coord).entered val containerTree = ValDef(containerSymbol, initValue(tpe)) - val offset = Select(ref(companion), offsetSymbol.name) + val offset = ref(companion).ensureApplied.select(offsetSymbol) val getFlag = Select(ref(helperModule), RLazyValsNames_get) val setFlag = Select(ref(helperModule), RLazyValsNames_setFlag) val wait = Select(ref(helperModule), RLazyValsNames_wait4Notification) |