Skip to content

Commit 5eb5a6b

Browse files
committed
Move current... methods to Phases and Periods
1 parent bec52f3 commit 5eb5a6b

21 files changed

+38
-25
lines changed

compiler/src/dotty/tools/dotc/Run.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Scopes._
1010
import typer.{ImportInfo, Typer}
1111
import Decorators._
1212
import io.{AbstractFile, PlainFile}
13-
import Phases.curPhases
13+
import Phases.{curPhases, currentPhase}
1414

1515
import scala.io.Codec
1616
import util.{Set => _, _}

compiler/src/dotty/tools/dotc/ast/tpd.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Decorators.{given _}, DenotTransformers._
1313
import collection.{immutable, mutable}
1414
import util.{Property, SourceFile, NoSource}
1515
import NameKinds.{TempResultName, OuterSelectName}
16+
import Phases.currentPhase
1617
import typer.ConstFold
1718

1819
import scala.annotation.tailrec

compiler/src/dotty/tools/dotc/core/Annotations.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import StdNames._
77
import dotty.tools.dotc.ast.tpd
88
import scala.util.Try
99
import util.Spans.Span
10+
import Periods.currentRunId
1011

1112
object Annotations {
1213

compiler/src/dotty/tools/dotc/core/Contexts.scala

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,6 @@ object Contexts {
7575
inline def atPhaseNotLaterThan[T](limit: Phase)(inline op: Context ?=> T)(using Context): T =
7676
op(using if !limit.exists || currentPhase <= limit then ctx else ctx.withPhase(limit))
7777

78-
inline def currentPeriod(using ctx: Context): Period = ctx.period
79-
80-
inline def currentPhase(using ctx: Context): Phase = ctx.base.phases(ctx.period.firstPhaseId)
81-
82-
inline def currentRunId(using ctx: Context): Int = ctx.period.runId
83-
84-
inline def currentPhaseId(using ctx: Context): Int = ctx.period.phaseId
85-
86-
8778
/** A context is passed basically everywhere in dotc.
8879
* This is convenient but carries the risk of captured contexts in
8980
* objects that turn into space leaks. To combat this risk, here are some

compiler/src/dotty/tools/dotc/core/Denotations.scala

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Flags._
1515
import DenotTransformers._
1616
import Decorators._
1717
import Signature.MatchDegree._
18+
import Phases.currentPhase
1819
import printing.Texts._
1920
import printing.Printer
2021
import io.AbstractFile
@@ -758,7 +759,7 @@ object Denotations {
758759
* the symbol is stale, which constitutes an internal error.
759760
*/
760761
def current(using Context): SingleDenotation = {
761-
val currentPeriod = Contexts.currentPeriod
762+
val now = Periods.currentPeriod
762763
val valid = myValidFor
763764
if (valid.code <= 0) {
764765
// can happen if we sit on a stale denotation which has been replaced
@@ -769,29 +770,29 @@ object Denotations {
769770
assert(false, this)
770771
}
771772

772-
if (valid.runId != currentPeriod.runId)
773+
if (valid.runId != now.runId)
773774
if (exists) initial.bringForward().current
774775
else this
775776
else {
776777
var cur = this
777-
if (currentPeriod.code > valid.code) {
778+
if (now.code > valid.code) {
778779
// search for containing period as long as nextInRun increases.
779780
var next = nextInRun
780-
while (next.validFor.code > valid.code && !(next.validFor contains currentPeriod)) {
781+
while (next.validFor.code > valid.code && !(next.validFor contains now)) {
781782
cur = next
782783
next = next.nextInRun
783784
}
784785
if (next.validFor.code > valid.code) {
785-
// in this case, next.validFor contains currentPeriod
786+
// in this case, next.validFor contains now
786787
cur = next
787788
cur
788789
}
789790
else {
790-
//println(s"might need new denot for $cur, valid for ${cur.validFor} at $currentPeriod")
791+
//println(s"might need new denot for $cur, valid for ${cur.validFor} at $now")
791792
// not found, cur points to highest existing variant
792793
val nextTransformerId = ctx.base.nextDenotTransformerId(cur.validFor.lastPhaseId)
793-
if (currentPeriod.lastPhaseId <= nextTransformerId)
794-
cur.validFor = Period(currentPeriod.runId, cur.validFor.firstPhaseId, nextTransformerId)
794+
if (now.lastPhaseId <= nextTransformerId)
795+
cur.validFor = Period(now.runId, cur.validFor.firstPhaseId, nextTransformerId)
795796
else {
796797
var startPid = nextTransformerId + 1
797798
val transformer = ctx.base.denotTransformers(nextTransformerId)
@@ -814,19 +815,19 @@ object Denotations {
814815
next.insertAfter(cur)
815816
cur = next
816817
}
817-
cur.validFor = Period(currentPeriod.runId, startPid, transformer.lastPhaseId)
818+
cur.validFor = Period(now.runId, startPid, transformer.lastPhaseId)
818819
//printPeriods(cur)
819820
//println(s"new denot: $cur, valid for ${cur.validFor}")
820821
}
821822
cur.current // multiple transformations could be required
822823
}
823824
}
824825
else {
825-
// currentPeriod < end of valid; in this case a version must exist
826+
// now < end of valid; in this case a version must exist
826827
// but to be defensive we check for infinite loop anyway
827828
var cnt = 0
828-
while (!(cur.validFor contains currentPeriod)) {
829-
//println(s"searching: $cur at $currentPeriod, valid for ${cur.validFor}")
829+
while (!(cur.validFor contains now)) {
830+
//println(s"searching: $cur at $now, valid for ${cur.validFor}")
830831
cur = cur.nextInRun
831832
// Note: One might be tempted to add a `prev` field to get to the new denotation
832833
// more directly here. I tried that, but it degrades rather than improves

compiler/src/dotty/tools/dotc/core/Periods.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ import Phases.curPhases
55

66
object Periods {
77

8+
inline def currentPeriod(using ctx: Context): Period = ctx.period
9+
10+
inline def currentRunId(using ctx: Context): RunId = ctx.period.runId
11+
12+
inline def currentPhaseId(using ctx: Context): PhaseId = ctx.period.phaseId
13+
814
/** The period containing the current period where denotations do not change.
915
* We compute this by taking as first phase the first phase less or equal to
1016
* the current phase that has the same "nextTransformerId". As last phase

compiler/src/dotty/tools/dotc/core/Phases.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ trait Phases {
2424

2525
object Phases {
2626

27+
inline def currentPhase(using ctx: Context): Phase = ctx.base.phases(ctx.period.firstPhaseId)
28+
2729
inline def phaseOf(id: PhaseId)(using Context): Phase =
2830
ctx.base.phases(id)
2931

compiler/src/dotty/tools/dotc/core/Scopes.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Contexts._
1515
import Phases._
1616
import Denotations._
1717
import SymDenotations._
18+
import Periods.currentPhaseId
1819
import printing.Texts._
1920
import printing.Printer
2021
import util.common._

compiler/src/dotty/tools/dotc/core/TypeOps.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import util.SourcePosition
1010
import NameKinds.DepParamName
1111
import Decorators._
1212
import StdNames._
13+
import Phases.currentPhase
1314
import collection.mutable
1415
import ast.tpd._
1516
import reporting.{trace, Message}

compiler/src/dotty/tools/dotc/reporting/Reporter.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import core.Contexts._
88
import core.TypeError
99
import util.{SourcePosition, NoSourcePosition}
1010
import core.Decorators.PhaseListDecorator
11+
import core.Phases.currentPhase
1112
import collection.mutable
1213
import core.Mode
1314
import dotty.tools.dotc.core.Symbols.{Symbol, NoSymbol}

compiler/src/dotty/tools/dotc/transform/SyntheticMembers.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Flags._
77
import DenotTransformers._
88
import Decorators._
99
import NameOps._
10+
import Phases.currentPhase
1011
import Annotations.Annotation
1112
import typer.ProtoTypes.constrained
1213
import ast.untpd

compiler/src/dotty/tools/dotc/transform/TransformByNameApply.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Types._
1111
import Flags._
1212
import Decorators._
1313
import DenotTransformers._
14+
import Phases.currentPhase
1415
import core.StdNames.nme
1516
import ast.Trees._
1617
import reporting.trace

compiler/src/dotty/tools/dotc/transform/TreeChecker.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import core.NameKinds.{DocArtifactName, OuterSelectName}
1313
import core.Decorators._
1414
import core.Phases._
1515
import core.Mode
16+
import core.Periods.currentPhaseId
1617
import typer._
1718
import typer.ErrorReporting._
1819
import reporting.ThrowingReporter

compiler/src/dotty/tools/dotc/transform/ValueClasses.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Types._
66
import Symbols._
77
import Contexts._
88
import Phases._
9+
import Periods.currentPhaseId
910
import Flags._
1011
import StdNames._
1112
import SymUtils._

compiler/src/dotty/tools/dotc/transform/YCheckPositions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import dotty.tools.dotc.ast.{tpd, untpd}
66
import dotty.tools.dotc.core.Contexts._
77
import dotty.tools.dotc.core.Decorators._
88
import dotty.tools.dotc.core.Flags._
9-
import dotty.tools.dotc.core.Phases.{Phase, postTyperPhase}
9+
import dotty.tools.dotc.core.Phases.{Phase, postTyperPhase, currentPhase}
1010
import dotty.tools.dotc.core.Symbols._
1111
import dotty.tools.dotc.util.{SourceFile, SourcePosition}
1212

compiler/src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import Trees._
1414
import TreeInfo._
1515
import ProtoTypes._
1616
import Scopes._
17+
import Phases.currentPhase
1718
import CheckRealizable._
1819
import ErrorReporting.errorTree
1920
import rewrites.Rewrites.patch

compiler/src/dotty/tools/dotc/typer/ErrorReporting.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import ast._
66
import core._
77
import Types._, ProtoTypes._, Contexts._, Decorators._, Denotations._, Symbols._
88
import Implicits._, Flags._, Constants.Constant
9+
import Phases.currentPhase
910
import util.Spans._
1011
import util.SourcePosition
1112
import config.Feature

compiler/src/dotty/tools/dotc/typer/Implicits.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Constants._
2424
import ProtoTypes._
2525
import ErrorReporting._
2626
import reporting.Message
27-
import Phases.currentlyAfterTyper
27+
import Phases.{currentPhase, currentlyAfterTyper}
2828
import Inferencing.{fullyDefinedType, isFullyDefined}
2929
import Trees._
3030
import transform.SymUtils._

compiler/src/dotty/tools/dotc/typer/Namer.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import ast._
77
import Trees._, StdNames._, Scopes._, Denotations._, NamerOps._, ContextOps._
88
import Contexts._, Symbols._, Types._, SymDenotations._, Names._, NameOps._, Flags._
99
import Decorators.{given _}, Comments.{_, given _}
10+
import Periods.currentRunId
1011
import NameKinds.DefaultGetterName
1112
import TypeApplications.TypeParamInfo
1213
import ast.desugar, ast.desugar._

compiler/src/dotty/tools/dotc/typer/TypeAssigner.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import core._
66
import ast._
77
import Contexts._, Constants._, Types._, Symbols._, Names._, Flags._, Decorators._
88
import ErrorReporting._, Annotations._, Denotations._, SymDenotations._, StdNames._
9+
import Phases.currentPhase
910
import util.Spans._
1011
import util.SourcePosition
1112
import config.Printers.typr

compiler/src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import Decorators.{given _}
2525
import ErrorReporting._
2626
import Checking._
2727
import Inferencing._
28-
import Phases.currentlyAfterTyper
28+
import Phases.{currentPhase, currentlyAfterTyper}
2929
import EtaExpansion.etaExpand
3030
import util.Spans._
3131
import util.common._

0 commit comments

Comments
 (0)