@@ -9,6 +9,7 @@ import core.Decorators._
99import core .Names .TermName
1010import MegaPhase .MiniPhase
1111import config .Printers .transforms
12+ import dotty .tools .dotc .util .Property
1213
1314/** Add accessors for all protected accesses. An accessor is needed if
1415 * according to the rules of the JVM a protected class member is not accessible
@@ -50,7 +51,15 @@ class ProtectedAccessors extends MiniPhase {
5051
5152 override def phaseName : String = ProtectedAccessors .name
5253
53- object Accessors extends AccessProxies {
54+ private val AccessorsKey = new Property .Key [Accessors ]
55+
56+ private def accessors (using Context ): Accessors =
57+ ctx.property(AccessorsKey ).get
58+
59+ override def prepareForUnit (tree : Tree )(using Context ): Context =
60+ ctx.fresh.setProperty(AccessorsKey , new Accessors )
61+
62+ private class Accessors extends AccessProxies {
5463 val insert : Insert = new Insert {
5564 def accessorNameOf (name : TermName , site : Symbol )(using Context ): TermName = ProtectedAccessorName (name)
5665 def needsAccessor (sym : Symbol )(using Context ) = ProtectedAccessors .needsAccessor(sym)
@@ -66,19 +75,20 @@ class ProtectedAccessors extends MiniPhase {
6675 }
6776
6877 override def transformIdent (tree : Ident )(using Context ): Tree =
69- Accessors .insert.accessorIfNeeded(tree)
78+ accessors .insert.accessorIfNeeded(tree)
7079
7180 override def transformSelect (tree : Select )(using Context ): Tree =
72- Accessors .insert.accessorIfNeeded(tree)
81+ accessors .insert.accessorIfNeeded(tree)
7382
7483 override def transformAssign (tree : Assign )(using Context ): Tree =
7584 tree.lhs match {
7685 case lhs : RefTree if lhs.name.is(ProtectedAccessorName ) =>
77- cpy.Apply (tree)(Accessors .insert.useSetter(lhs), tree.rhs :: Nil )
86+ cpy.Apply (tree)(accessors .insert.useSetter(lhs), tree.rhs :: Nil )
7887 case _ =>
7988 tree
8089 }
8190
8291 override def transformTemplate (tree : Template )(using Context ): Tree =
83- cpy.Template (tree)(body = Accessors .addAccessorDefs(tree.symbol.owner, tree.body))
92+ cpy.Template (tree)(body = accessors.addAccessorDefs(tree.symbol.owner, tree.body))
93+
8494}
0 commit comments