Skip to content

Commit 976702a

Browse files
committed
LazyVals: make all fields added to companions static.
1 parent c73fbaa commit 976702a

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer with Nee
9191
appendOffsetDefs.get(cls) match {
9292
case None => template
9393
case Some(data) =>
94+
data.defs.foreach(_.symbol.addAnnotation(defn.ScalaStaticAnnot))
9495
cpy.Template(template)(body = addInFront(data.defs, template.body))
9596
}
9697

@@ -357,6 +358,7 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer with Nee
357358
.symbol.asTerm
358359
} else { // need to create a new flag
359360
offsetSymbol = ctx.newSymbol(companion.moduleClass, (StdNames.nme.LAZY_FIELD_OFFSET + id.toString).toTermName, Flags.Synthetic, defn.LongType).enteredAfter(this)
361+
offsetSymbol.addAnnotation(defn.ScalaStaticAnnot)
360362
val flagName = (StdNames.nme.BITMAP_PREFIX + id.toString).toTermName
361363
val flagSymbol = ctx.newSymbol(claz, flagName, containerFlags, defn.LongType).enteredAfter(this)
362364
flag = ValDef(flagSymbol, Literal(Constants.Constant(0L)))
@@ -366,6 +368,7 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer with Nee
366368

367369
case None =>
368370
offsetSymbol = ctx.newSymbol(companion.moduleClass, (StdNames.nme.LAZY_FIELD_OFFSET + "0").toTermName, Flags.Synthetic, defn.LongType).enteredAfter(this)
371+
offsetSymbol.addAnnotation(defn.ScalaStaticAnnot)
369372
val flagName = (StdNames.nme.BITMAP_PREFIX + "0").toTermName
370373
val flagSymbol = ctx.newSymbol(claz, flagName, containerFlags, defn.LongType).enteredAfter(this)
371374
flag = ValDef(flagSymbol, Literal(Constants.Constant(0L)))
@@ -375,9 +378,10 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer with Nee
375378

376379
val containerName = ctx.freshName(x.name.asTermName.lazyLocalName).toTermName
377380
val containerSymbol = ctx.newSymbol(claz, containerName, (x.mods &~ containerFlagsMask | containerFlags).flags, tpe, coord = x.symbol.coord).enteredAfter(this)
381+
378382
val containerTree = ValDef(containerSymbol, defaultValue(tpe))
379383

380-
val offset = ref(companion).ensureApplied.select(offsetSymbol)
384+
val offset = ref(offsetSymbol)
381385
val getFlag = Select(ref(helperModule), lazyNme.RLazyVals.get)
382386
val setFlag = Select(ref(helperModule), lazyNme.RLazyVals.setFlag)
383387
val wait = Select(ref(helperModule), lazyNme.RLazyVals.wait4Notification)

0 commit comments

Comments
 (0)