Skip to content

Commit e512210

Browse files
committed
Make Lazy-vals generated fields private.
1 parent d3bead9 commit e512210

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/dotty/tools/dotc/transform/LazyVals.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,10 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer {
166166
val tpe = x.tpe.widen.resultType.widen
167167
assert(!(x.mods is Flags.Mutable))
168168
val containerName = ctx.freshName(x.name ++ StdNames.nme.LAZY_LOCAL).toTermName
169-
val containerSymbol = ctx.newSymbol(claz, containerName, (x.mods &~ containerFlagsMask | containerFlags).flags, tpe, coord = x.symbol.coord).enteredAfter(this)
169+
val containerSymbol = ctx.newSymbol(claz, containerName,
170+
x.symbol.flags &~ containerFlagsMask | containerFlags | Flags.Private,
171+
tpe, coord = x.symbol.coord
172+
).enteredAfter(this)
170173

171174
val containerTree = ValDef(containerSymbol, initValue(tpe))
172175
if (x.tpe.isNotNull && tpe <:< defn.ObjectType) { // can use 'null' value instead of flag
@@ -175,7 +178,7 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer {
175178
}
176179
else {
177180
val flagName = ctx.freshName(x.name ++ StdNames.nme.BITMAP_PREFIX).toTermName
178-
val flagSymbol = ctx.newSymbol(x.symbol.owner, flagName, containerFlags, defn.BooleanType)
181+
val flagSymbol = ctx.newSymbol(x.symbol.owner, flagName, containerFlags | Flags.Private, defn.BooleanType).entered
179182
val flag = ValDef(flagSymbol, Literal(Constants.Constant(false)))
180183
val slowPath = DefDef(x.symbol.asTerm, mkNonThreadSafeDef(ref(containerSymbol), ref(flagSymbol), x.rhs))
181184
Thicket(List(containerTree, flag, slowPath))

0 commit comments

Comments
 (0)