@@ -16,25 +16,26 @@ import Periods._
1616import typer .{FrontEnd , RefChecks }
1717import typer .ImportInfo .withRootImports
1818import ast .tpd
19+ import scala .annotation .internal .sharable
1920
2021object Phases {
2122
2223 inline def phaseOf (id : PhaseId )(using Context ): Phase =
2324 ctx.base.phases(id)
2425
26+ @ sharable object NoPhase extends Phase {
27+ override def exists : Boolean = false
28+ def phaseName : String = " <no phase>"
29+ def run (using Context ): Unit = unsupported(" run" )
30+ def transform (ref : SingleDenotation )(using Context ): SingleDenotation = unsupported(" transform" )
31+ }
32+
2533 trait PhasesBase {
2634 this : ContextBase =>
2735
2836 // drop NoPhase at beginning
2937 def allPhases : Array [Phase ] = (if (fusedPhases.nonEmpty) fusedPhases else phases).tail
3038
31- object NoPhase extends Phase {
32- override def exists : Boolean = false
33- def phaseName : String = " <no phase>"
34- def run (using Context ): Unit = unsupported(" run" )
35- def transform (ref : SingleDenotation )(using Context ): SingleDenotation = unsupported(" transform" )
36- }
37-
3839 object SomePhase extends Phase {
3940 def phaseName : String = " <some phase>"
4041 def run (using Context ): Unit = unsupported(" run" )
@@ -198,6 +199,7 @@ object Phases {
198199 private var mySbtExtractDependenciesPhase : Phase = _
199200 private var myPicklerPhase : Phase = _
200201 private var myPickleQuotesPhase : Phase = _
202+ private var myFirstTransformPhase : Phase = _
201203 private var myCollectNullableFieldsPhase : Phase = _
202204 private var myRefChecksPhase : Phase = _
203205 private var myPatmatPhase : Phase = _
@@ -217,6 +219,7 @@ object Phases {
217219 final def sbtExtractDependenciesPhase : Phase = mySbtExtractDependenciesPhase
218220 final def picklerPhase : Phase = myPicklerPhase
219221 final def pickleQuotesPhase : Phase = myPickleQuotesPhase
222+ final def firstTransformPhase : Phase = myFirstTransformPhase
220223 final def collectNullableFieldsPhase : Phase = myCollectNullableFieldsPhase
221224 final def refchecksPhase : Phase = myRefChecksPhase
222225 final def patmatPhase : Phase = myPatmatPhase
@@ -239,6 +242,7 @@ object Phases {
239242 mySbtExtractDependenciesPhase = phaseOfClass(classOf [sbt.ExtractDependencies ])
240243 myPicklerPhase = phaseOfClass(classOf [Pickler ])
241244 myPickleQuotesPhase = phaseOfClass(classOf [PickleQuotes ])
245+ myFirstTransformPhase = phaseOfClass(classOf [FirstTransform ])
242246 myCollectNullableFieldsPhase = phaseOfClass(classOf [CollectNullableFields ])
243247 myRefChecksPhase = phaseOfClass(classOf [RefChecks ])
244248 myElimRepeatedPhase = phaseOfClass(classOf [ElimRepeated ])
@@ -385,10 +389,10 @@ object Phases {
385389 exists && id <= that.id
386390
387391 final def prev : Phase =
388- if (id > FirstPhaseId ) myBase.phases(start - 1 ) else myBase. NoPhase
392+ if (id > FirstPhaseId ) myBase.phases(start - 1 ) else NoPhase
389393
390394 final def next : Phase =
391- if (hasNext) myBase.phases(end + 1 ) else myBase. NoPhase
395+ if (hasNext) myBase.phases(end + 1 ) else NoPhase
392396
393397 final def hasNext : Boolean = start >= FirstPhaseId && end + 1 < myBase.phases.length
394398
@@ -403,6 +407,7 @@ object Phases {
403407 def sbtExtractDependenciesPhase (using Context ): Phase = ctx.base.sbtExtractDependenciesPhase
404408 def picklerPhase (using Context ): Phase = ctx.base.picklerPhase
405409 def pickleQuotesPhase (using Context ): Phase = ctx.base.pickleQuotesPhase
410+ def firstTransformPhase (using Context ): Phase = ctx.base.firstTransformPhase
406411 def refchecksPhase (using Context ): Phase = ctx.base.refchecksPhase
407412 def elimRepeatedPhase (using Context ): Phase = ctx.base.elimRepeatedPhase
408413 def extensionMethodsPhase (using Context ): Phase = ctx.base.extensionMethodsPhase
0 commit comments