Skip to content

Commit 1798e29

Browse files
committed
Convert transform classes (3)
1 parent 7366f5c commit 1798e29

25 files changed

+183
-183
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class Memoize extends MiniPhase with IdentityDenotTransformer { thisPhase =>
4141

4242
/* Makes sure that, after getters and constructors gen, there doesn't
4343
* exist non-deferred definitions that are not implemented. */
44-
override def checkPostCondition(tree: Tree)(implicit ctx: Context): Unit = {
44+
override def checkPostCondition(tree: Tree)(using Context): Unit = {
4545
def errorLackImplementation(t: Tree) = {
4646
val firstPhaseId = t.symbol.initial.validFor.firstPhaseId
4747
val definingPhase = ctx.withPhase(firstPhaseId).phase.prev
@@ -68,7 +68,7 @@ class Memoize extends MiniPhase with IdentityDenotTransformer { thisPhase =>
6868
*/
6969
override def runsAfter: Set[String] = Set(Mixin.name)
7070

71-
override def transformDefDef(tree: DefDef)(implicit ctx: Context): Tree = {
71+
override def transformDefDef(tree: DefDef)(using Context): Tree = {
7272
val sym = tree.symbol
7373

7474
def newField = {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class Mixin extends MiniPhase with SymTransformer { thisPhase =>
120120

121121
override def changesMembers: Boolean = true // the phase adds implementions of mixin accessors
122122

123-
override def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation =
123+
override def transformSym(sym: SymDenotation)(using Context): SymDenotation =
124124
if (sym.is(Accessor, butNot = Deferred) && sym.owner.is(Trait)) {
125125
val sym1 =
126126
if (sym.is(Lazy)) sym
@@ -134,7 +134,7 @@ class Mixin extends MiniPhase with SymTransformer { thisPhase =>
134134
else
135135
sym
136136

137-
private def initializer(sym: Symbol)(implicit ctx: Context): TermSymbol = {
137+
private def initializer(sym: Symbol)(using Context): TermSymbol = {
138138
if (sym.is(Lazy)) sym
139139
else {
140140
val initName = InitializerName(sym.name.asTermName)
@@ -149,7 +149,7 @@ class Mixin extends MiniPhase with SymTransformer { thisPhase =>
149149
}
150150
}.asTerm
151151

152-
override def transformTemplate(impl: Template)(implicit ctx: Context): Template = {
152+
override def transformTemplate(impl: Template)(using Context): Template = {
153153
val cls = impl.symbol.owner.asClass
154154
val ops = new MixinOps(cls, thisPhase)
155155
import ops._

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import SymUtils._
88
import StdNames._, NameOps._
99
import Decorators._
1010

11-
class MixinOps(cls: ClassSymbol, thisPhase: DenotTransformer)(implicit ctx: Context) {
11+
class MixinOps(cls: ClassSymbol, thisPhase: DenotTransformer)(using Context) {
1212
import ast.tpd._
1313

1414
val superCls: Symbol = cls.superClass

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class MoveStatics extends MiniPhase with SymTransformer {
2323
import tpd._
2424
override def phaseName: String = MoveStatics.name
2525

26-
def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation =
26+
def transformSym(sym: SymDenotation)(using Context): SymDenotation =
2727
if (sym.hasAnnotation(defn.ScalaStaticAnnot) && sym.owner.is(Flags.Module) && sym.owner.companionClass.exists &&
2828
(sym.is(Flags.Method) || !(sym.is(Flags.Mutable) && sym.owner.companionClass.is(Flags.Trait)))) {
2929
sym.owner.asClass.delete(sym.symbol)
@@ -32,7 +32,7 @@ class MoveStatics extends MiniPhase with SymTransformer {
3232
}
3333
else sym
3434

35-
override def transformStats(trees: List[Tree])(implicit ctx: Context): List[Tree] =
35+
override def transformStats(trees: List[Tree])(using Context): List[Tree] =
3636
if (ctx.owner.is(Flags.Package)) {
3737
val (classes, others) = trees.partition(x => x.isInstanceOf[TypeDef] && x.symbol.isClass)
3838
val pairs = classes.groupBy(_.symbol.name.stripModuleClassSuffix).asInstanceOf[Map[Name, List[TypeDef]]]

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import config.SourceVersion._
1010

1111
object NonLocalReturns {
1212
import ast.tpd._
13-
def isNonLocalReturn(ret: Return)(implicit ctx: Context): Boolean =
13+
def isNonLocalReturn(ret: Return)(using Context): Boolean =
1414
!ret.from.symbol.is(Label) && (ret.from.symbol != ctx.owner.enclosingMethod || ctx.owner.is(Lazy))
1515
}
1616

@@ -24,21 +24,21 @@ class NonLocalReturns extends MiniPhase {
2424

2525
override def runsAfter: Set[String] = Set(ElimByName.name)
2626

27-
private def ensureConforms(tree: Tree, pt: Type)(implicit ctx: Context) =
27+
private def ensureConforms(tree: Tree, pt: Type)(using Context) =
2828
if (tree.tpe <:< pt) tree
2929
else Erasure.Boxing.adaptToType(tree, pt)
3030

3131
private def nonLocalReturnControl(using Context) = defn.NonLocalReturnControlClass.typeRef
3232

3333
/** The type of a non-local return expression with given argument type */
34-
private def nonLocalReturnExceptionType(argtype: Type)(implicit ctx: Context) =
34+
private def nonLocalReturnExceptionType(argtype: Type)(using Context) =
3535
nonLocalReturnControl.appliedTo(argtype)
3636

3737
/** A hashmap from method symbols to non-local return keys */
3838
private val nonLocalReturnKeys = newMutableSymbolMap[TermSymbol]
3939

4040
/** Return non-local return key for given method */
41-
private def nonLocalReturnKey(meth: Symbol)(implicit ctx: Context) =
41+
private def nonLocalReturnKey(meth: Symbol)(using Context) =
4242
nonLocalReturnKeys.getOrElseUpdate(meth,
4343
ctx.newSymbol(
4444
meth, NonLocalReturnKeyName.fresh(), Synthetic, defn.ObjectType, coord = meth.span))
@@ -50,7 +50,7 @@ class NonLocalReturns extends MiniPhase {
5050
* todo: maybe clone a pre-existing exception instead?
5151
* (but what to do about exceptions that miss their targets?)
5252
*/
53-
private def nonLocalReturnThrow(expr: Tree, meth: Symbol)(implicit ctx: Context) =
53+
private def nonLocalReturnThrow(expr: Tree, meth: Symbol)(using Context) =
5454
Throw(
5555
New(
5656
nonLocalReturnControl,
@@ -69,7 +69,7 @@ class NonLocalReturns extends MiniPhase {
6969
* }
7070
* }
7171
*/
72-
private def nonLocalReturnTry(body: Tree, key: TermSymbol, meth: Symbol)(implicit ctx: Context) = {
72+
private def nonLocalReturnTry(body: Tree, key: TermSymbol, meth: Symbol)(using Context) = {
7373
val keyDef = ValDef(key, New(defn.ObjectType, Nil))
7474
val ex = ctx.newSymbol(meth, nme.ex, Case, nonLocalReturnControl, coord = body.span)
7575
val pat = BindTyped(ex, nonLocalReturnControl)
@@ -82,13 +82,13 @@ class NonLocalReturns extends MiniPhase {
8282
Block(keyDef :: Nil, tryCatch)
8383
}
8484

85-
override def transformDefDef(tree: DefDef)(implicit ctx: Context): Tree =
85+
override def transformDefDef(tree: DefDef)(using Context): Tree =
8686
nonLocalReturnKeys.remove(tree.symbol) match {
8787
case Some(key) => cpy.DefDef(tree)(rhs = nonLocalReturnTry(tree.rhs, key, tree.symbol))
8888
case _ => tree
8989
}
9090

91-
override def transformReturn(tree: Return)(implicit ctx: Context): Tree =
91+
override def transformReturn(tree: Return)(using Context): Tree =
9292
if isNonLocalReturn(tree) then
9393
if sourceVersion.isAtLeast(`3.1`) then
9494
ctx.errorOrMigrationWarning("Non local returns are no longer supported; use scala.util.control.NonLocalReturns instead", tree.sourcePos)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ object OverridingPairs {
2020
/** The cursor class
2121
* @param base the base class that contains the overriding pairs
2222
*/
23-
class Cursor(base: Symbol)(implicit ctx: Context) {
23+
class Cursor(base: Symbol)(using Context) {
2424

2525
private val self = base.thisType
2626

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ class PCPCheckAndHeal(@constructorOnly ictx: Context) extends TreeMapWithStages(
6060

6161
private val InAnnotation = Property.Key[Unit]()
6262

63-
override def transform(tree: Tree)(implicit ctx: Context): Tree =
63+
override def transform(tree: Tree)(using Context): Tree =
6464
if (tree.source != ctx.source && tree.source.exists)
65-
transform(tree)(ctx.withSource(tree.source))
65+
transform(tree)(using ctx.withSource(tree.source))
6666
else if !isInQuoteOrSplice then
6767
checkAnnotations(tree)
6868
super.transform(tree)
@@ -100,7 +100,7 @@ class PCPCheckAndHeal(@constructorOnly ictx: Context) extends TreeMapWithStages(
100100
}
101101

102102
/** Transform quoted trees while maintaining phase correctness */
103-
override protected def transformQuotation(body: Tree, quote: Tree)(implicit ctx: Context): Tree = {
103+
override protected def transformQuotation(body: Tree, quote: Tree)(using Context): Tree = {
104104
val taggedTypes = new PCPCheckAndHeal.QuoteTypeTags(quote.span)(using ctx)
105105

106106
if (ctx.property(InAnnotation).isDefined)
@@ -109,7 +109,7 @@ class PCPCheckAndHeal(@constructorOnly ictx: Context) extends TreeMapWithStages(
109109
val contextWithQuote =
110110
if level == 0 then contextWithQuoteTypeTags(taggedTypes)(using quoteContext)
111111
else quoteContext
112-
val body1 = transform(body)(contextWithQuote)
112+
val body1 = transform(body)(using contextWithQuote)
113113
val body2 =
114114
taggedTypes.getTypeTags match
115115
case Nil => body1
@@ -123,8 +123,8 @@ class PCPCheckAndHeal(@constructorOnly ictx: Context) extends TreeMapWithStages(
123123
* - If inside inlined code, expand the macro code.
124124
* - If inside of a macro definition, check the validity of the macro.
125125
*/
126-
protected def transformSplice(body: Tree, splice: Tree)(implicit ctx: Context): Tree = {
127-
val body1 = transform(body)(spliceContext)
126+
protected def transformSplice(body: Tree, splice: Tree)(using Context): Tree = {
127+
val body1 = transform(body)(using spliceContext)
128128
splice match {
129129
case Apply(fun @ TypeApply(_, _ :: Nil), _) if splice.isTerm =>
130130
// Type of the splice itsel must also be healed
@@ -216,7 +216,7 @@ class PCPCheckAndHeal(@constructorOnly ictx: Context) extends TreeMapWithStages(
216216
* refercence to a type alias containing the equivalent of `${summon[quoted.Type[T]]}`.
217217
* Emits and error if `T` cannot be healed and returns `T`.
218218
*/
219-
protected def tryHeal(sym: Symbol, tp: TypeRef, pos: SourcePosition)(implicit ctx: Context): TypeRef = {
219+
protected def tryHeal(sym: Symbol, tp: TypeRef, pos: SourcePosition)(using Context): TypeRef = {
220220
val reqType = defn.QuotedTypeClass.typeRef.appliedTo(tp)
221221
val tag = ctx.typer.inferImplicitArg(reqType, pos.span)
222222
tag.tpe match

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class PatternMatcher extends MiniPhase {
2929
override def phaseName: String = PatternMatcher.name
3030
override def runsAfter: Set[String] = Set(ElimRepeated.name)
3131

32-
override def transformMatch(tree: Match)(implicit ctx: Context): Tree =
32+
override def transformMatch(tree: Match)(using Context): Tree =
3333
if (tree.isInstanceOf[InlineMatch]) tree
3434
else {
3535
// Widen termrefs with underlying `=> T` types. Otherwise ElimByName will produce
@@ -62,7 +62,7 @@ object PatternMatcher {
6262
val TrustedTypeTestKey: Key[Unit] = new StickyKey[Unit]
6363

6464
/** Was symbol generated by pattern matcher? */
65-
def isPatmatGenerated(sym: Symbol)(implicit ctx: Context): Boolean =
65+
def isPatmatGenerated(sym: Symbol)(using Context): Boolean =
6666
sym.is(Synthetic) && sym.name.is(PatMatStdBinderName)
6767

6868
/** The pattern matching translator.
@@ -82,7 +82,7 @@ object PatternMatcher {
8282
* It's represented by its own data type. Plans are optimized by merging common
8383
* tests and eliminating dead code.
8484
*/
85-
class Translator(resultType: Type, thisPhase: MiniPhase)(implicit ctx: Context) {
85+
class Translator(resultType: Type, thisPhase: MiniPhase)(using Context) {
8686

8787
// ------- Bindings for variables and labels ---------------------
8888

@@ -383,7 +383,7 @@ object PatternMatcher {
383383
assert(mt.isImplicitMethod || mt.isContextualMethod)
384384
val (args, rest) = implicits.splitAt(mt.paramNames.size)
385385
applyImplicits(acc.appliedToArgs(args), rest, mt.resultType)
386-
case _ =>
386+
case _ =>
387387
assert(implicits.isEmpty)
388388
acc
389389
}
@@ -442,7 +442,7 @@ object PatternMatcher {
442442
/** A superclass for plan transforms */
443443
class PlanTransform extends (Plan => Plan) {
444444
protected val treeMap: TreeMap = new TreeMap {
445-
override def transform(tree: Tree)(implicit ctx: Context) = tree
445+
override def transform(tree: Tree)(using Context) = tree
446446
}
447447
def apply(tree: Tree): Tree = treeMap.transform(tree)
448448
def apply(plan: TestPlan): Plan = {
@@ -501,7 +501,7 @@ object PatternMatcher {
501501
private def varRefCount(plan: Plan): collection.Map[Symbol, Int] = {
502502
object refCounter extends RefCounter {
503503
override val treeMap = new TreeMap {
504-
override def transform(tree: Tree)(implicit ctx: Context) = tree match {
504+
override def transform(tree: Tree)(using Context) = tree match {
505505
case tree: Ident =>
506506
if (isPatmatGenerated(tree.symbol)) count(tree.symbol) += 1
507507
tree
@@ -563,7 +563,7 @@ object PatternMatcher {
563563
def mergeTests(plan: Plan): Plan = {
564564
class SubstituteIdent(from: TermSymbol, to: TermSymbol) extends PlanTransform {
565565
override val treeMap = new TreeMap {
566-
override def transform(tree: Tree)(implicit ctx: Context) = tree match {
566+
override def transform(tree: Tree)(using Context) = tree match {
567567
case tree: Ident if tree.symbol == from => ref(to)
568568
case _ => super.transform(tree)
569569
}
@@ -646,7 +646,7 @@ object PatternMatcher {
646646

647647
object Inliner extends PlanTransform {
648648
override val treeMap = new TreeMap {
649-
override def transform(tree: Tree)(implicit ctx: Context) = tree match {
649+
override def transform(tree: Tree)(using Context) = tree match {
650650
case tree: Ident =>
651651
val sym = tree.symbol
652652
if (toDrop(sym)) transform(initializer(sym))

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Pickler extends Phase {
2525
override def phaseName: String = Pickler.name
2626

2727
// No need to repickle trees coming from TASTY
28-
override def isRunnable(implicit ctx: Context): Boolean =
28+
override def isRunnable(using Context): Boolean =
2929
super.isRunnable && !ctx.settings.fromTasty.value
3030

3131
private def output(name: String, msg: String) = {
@@ -39,13 +39,13 @@ class Pickler extends Phase {
3939
private val picklers = new mutable.HashMap[ClassSymbol, TastyPickler]
4040

4141
/** Drop any elements of this list that are linked module classes of other elements in the list */
42-
private def dropCompanionModuleClasses(clss: List[ClassSymbol])(implicit ctx: Context): List[ClassSymbol] = {
42+
private def dropCompanionModuleClasses(clss: List[ClassSymbol])(using Context): List[ClassSymbol] = {
4343
val companionModuleClasses =
4444
clss.filterNot(_.is(Module)).map(_.linkedClass).filterNot(_.isAbsent())
4545
clss.filterNot(companionModuleClasses.contains)
4646
}
4747

48-
override def run(implicit ctx: Context): Unit = {
48+
override def run(using Context): Unit = {
4949
val unit = ctx.compilationUnit
5050
pickling.println(i"unpickling in run ${ctx.runId}")
5151

@@ -87,11 +87,11 @@ class Pickler extends Phase {
8787
}
8888
}
8989

90-
override def runOn(units: List[CompilationUnit])(implicit ctx: Context): List[CompilationUnit] = {
90+
override def runOn(units: List[CompilationUnit])(using Context): List[CompilationUnit] = {
9191
val result = super.runOn(units)
9292
if (ctx.settings.YtestPickler.value)
9393
testUnpickler(
94-
ctx.fresh
94+
using ctx.fresh
9595
.setPeriod(Period(ctx.runId + 1, FirstPhaseId))
9696
.setReporter(new ThrowingReporter(ctx.reporter))
9797
.addMode(Mode.ReadPositions)
@@ -100,7 +100,7 @@ class Pickler extends Phase {
100100
result
101101
}
102102

103-
private def testUnpickler(implicit ctx: Context): Unit = {
103+
private def testUnpickler(using Context): Unit = {
104104
pickling.println(i"testing unpickler at run ${ctx.runId}")
105105
ctx.initialize()
106106
val unpicklers =
@@ -116,7 +116,7 @@ class Pickler extends Phase {
116116
}
117117
}
118118

119-
private def testSame(unpickled: String, previous: String, cls: ClassSymbol)(implicit ctx: Context) =
119+
private def testSame(unpickled: String, previous: String, cls: ClassSymbol)(using Context) =
120120
if (previous != unpickled) {
121121
output("before-pickling.txt", previous)
122122
output("after-pickling.txt", unpickled)

0 commit comments

Comments
 (0)