@@ -58,7 +58,6 @@ class LazyVals extends MiniPhase with IdentityDenotTransformer {
58
58
else nullables.toList
59
59
}
60
60
61
-
62
61
private def initBlock (stats : List [Tree ])(using Context ): Block = stats match
63
62
case Nil => throw new IllegalArgumentException (" trying to create an empty Block" )
64
63
case x :: Nil => Block (List (x), EmptyTree )
@@ -444,7 +443,7 @@ class LazyVals extends MiniPhase with IdentityDenotTransformer {
444
443
def transformMemberDefThreadSafe (x : ValOrDefDef )(using Context ): Thicket = {
445
444
import dotty .tools .dotc .core .Types ._
446
445
import dotty .tools .dotc .core .Flags ._
447
-
446
+
448
447
assert(! (x.symbol is Mutable ))
449
448
450
449
val runtimeModule = " scala.runtime.LazyVals"
@@ -457,6 +456,7 @@ class LazyVals extends MiniPhase with IdentityDenotTransformer {
457
456
def offsetName (id : Int ) = s " ${StdNames .nme.LAZY_FIELD_OFFSET }${if (x.symbol.owner.is(Module )) " _m_" else " " }$id" .toTermName
458
457
459
458
val containerName = LazyLocalName .fresh(x.name.asTermName)
459
+ val containerNameEscaped = containerName.toString.replace(" " , " $u0020" ) // escape spaces in names
460
460
val containerSymbol = newSymbol(claz, containerName, containerFlags, defn.ObjectType ).enteredAfter(this )
461
461
containerSymbol.addAnnotation(Annotation (defn.VolatileAnnot )) // private @volatile var _x: AnyRef
462
462
containerSymbol.addAnnotations(x.symbol.annotations) // pass annotations from original definition
@@ -475,13 +475,13 @@ class LazyVals extends MiniPhase with IdentityDenotTransformer {
475
475
case Some (info) =>
476
476
offsetSymbol = newSymbol(claz, offsetName(info.defs.size), Synthetic , defn.LongType ).enteredAfter(this )
477
477
offsetSymbol.nn.addAnnotation(Annotation (defn.ScalaStaticAnnot ))
478
- val fieldTree = thizClass.select(lazyNme.RLazyVals .getDeclaredField).appliedTo(Literal (Constant (containerName.toString )))
478
+ val fieldTree = thizClass.select(lazyNme.RLazyVals .getDeclaredField).appliedTo(Literal (Constant (containerNameEscaped )))
479
479
val offsetTree = ValDef (offsetSymbol.nn, getOffset.appliedTo(fieldTree))
480
480
info.defs = offsetTree :: info.defs
481
481
case None =>
482
482
offsetSymbol = newSymbol(claz, offsetName(0 ), Synthetic , defn.LongType ).enteredAfter(this )
483
483
offsetSymbol.nn.addAnnotation(Annotation (defn.ScalaStaticAnnot ))
484
- val fieldTree = thizClass.select(lazyNme.RLazyVals .getDeclaredField).appliedTo(Literal (Constant (containerName.toString )))
484
+ val fieldTree = thizClass.select(lazyNme.RLazyVals .getDeclaredField).appliedTo(Literal (Constant (containerNameEscaped )))
485
485
val offsetTree = ValDef (offsetSymbol.nn, getOffset.appliedTo(fieldTree))
486
486
appendOffsetDefs += (claz -> new OffsetInfo (List (offsetTree)))
487
487
0 commit comments