Skip to content

Commit 1f15b29

Browse files
committed
Move out miniphase
1 parent e5fd477 commit 1f15b29

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ class Compiler {
3535
protected def frontendPhases: List[List[Phase]] =
3636
List(new Parser) :: // Compiler frontend: scanner, parser
3737
List(new TyperPhase) :: // Compiler frontend: namer, typer
38-
List(new CheckUnused.PostTyper, new CheckShadowing) :: // Check for unused and shadowing elements
38+
List(new CheckUnused.PostTyper) :: // Check for unused elements
39+
List(new CheckShadowing) :: // Check for shadowing elements
3940
List(new YCheckPositions) :: // YCheck positions
4041
List(new sbt.ExtractDependencies) :: // Sends information on classes' dependencies to sbt via callbacks
4142
List(new semanticdb.ExtractSemanticDB) :: // Extract info into .semanticdb files

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

+13-15
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ class CheckShadowing extends MiniPhase:
158158
override def traverse(tree: tpd.Tree)(using Context): Unit =
159159
tree match
160160
case t:tpd.Import =>
161-
shadowingDataApply(sd => sd.registerImport(t))
162-
traverseChildren(tree)
161+
val newCtx = shadowingDataApply(sd => sd.registerImport(t))
162+
traverseChildren(tree)(using newCtx)
163163
case _ =>
164164
traverseChildren(tree)
165165

@@ -180,9 +180,9 @@ object CheckShadowing:
180180
private val renamedImports = MutStack[MutMap[SimpleName, Name]]() // original name -> renamed name
181181

182182
private val typeParamCandidates = MutMap[Symbol, Seq[tpd.TypeDef]]().withDefaultValue(Seq())
183-
private val shadowedTypeDefs = MutSet[TypeParamShadowWarning]()
183+
private val typeParamShadowWarnings = MutSet[TypeParamShadowWarning]()
184184

185-
private val shadowedPrivateDefs = MutSet[PrivateShadowWarning]()
185+
private val privateShadowWarnings = MutSet[PrivateShadowWarning]()
186186

187187
def inNewScope()(using Context) =
188188
explicitsImports.push(MutSet())
@@ -194,7 +194,6 @@ object CheckShadowing:
194194

195195
/** Register the Root imports (at once per compilation unit)*/
196196
def registerRootImports()(using Context) =
197-
ctx.definitions.rootImportTypes.foreach(rimp => println())
198197
val langPackageName = ctx.definitions.JavaLangPackageVal.name.toSimpleName // excludes lang package
199198
rootImports.addAll(ctx.definitions.rootImportTypes.withFilter(_.name.toSimpleName != langPackageName).flatMap(_.typeMembers))
200199

@@ -222,7 +221,7 @@ object CheckShadowing:
222221
.orElse(lookForUnitShadowedType(sym))
223222
shadowedType.foreach(shadowed =>
224223
if !renamedImports.exists(_.contains(shadowed.name.toSimpleName)) then
225-
shadowedTypeDefs += TypeParamShadowWarning(typeDef.srcPos, typeDef.symbol, parent, shadowed)
224+
typeParamShadowWarnings += TypeParamShadowWarning(typeDef.srcPos, typeDef.symbol, parent, shadowed)
226225
)
227226
})
228227

@@ -247,7 +246,7 @@ object CheckShadowing:
247246
/** Register if the valDef is a private declaration that shadows an inherited field */
248247
def registerPrivateShadows(valDef: tpd.ValDef)(using Context): Unit =
249248
lookForShadowedField(valDef.symbol).foreach(shadowedField =>
250-
shadowedPrivateDefs += PrivateShadowWarning(valDef.startPos, valDef.symbol, shadowedField)
249+
privateShadowWarnings += PrivateShadowWarning(valDef.startPos, valDef.symbol, shadowedField)
251250
)
252251

253252
private def lookForShadowedField(symDecl: Symbol)(using Context): Option[Symbol] =
@@ -266,27 +265,26 @@ object CheckShadowing:
266265

267266
/** Get the shadowing analysis's result */
268267
def getShadowingResult(using Context): ShadowResult =
269-
270-
val privateShadowWarnings: List[ShadowWarning] =
268+
val privateWarnings: List[ShadowWarning] =
271269
if ctx.settings.XlintHas.privateShadow then
272-
shadowedPrivateDefs.toList
270+
privateShadowWarnings.toList
273271
else
274272
Nil
275-
val typeParamShadowWarnings: List[ShadowWarning] =
273+
val typeParamWarnings: List[ShadowWarning] =
276274
if ctx.settings.XlintHas.typeParameterShadow then
277-
shadowedTypeDefs.toList
275+
typeParamShadowWarnings.toList
278276
else
279277
Nil
280-
ShadowResult(privateShadowWarnings ++ typeParamShadowWarnings)
278+
ShadowResult(privateWarnings ++ typeParamWarnings)
281279

282280
extension (sym: Symbol)
283281
/** Given an import and accessibility, return the import's symbol that matches import<->this symbol */
284282
private def isInImport(imp: tpd.Import)(using Context): Option[Symbol] =
285283
val tpd.Import(qual, sels) = imp
286284
val simpleSelections = qual.tpe.member(sym.name).alternatives
287285
val typeSelections = sels.flatMap(n => qual.tpe.member(n.name.toTypeName).alternatives)
288-
289-
sels.find(is => is.rename.toSimpleName == sym.name.toSimpleName).map(_.symbol)
286+
sels
287+
.find(is => is.rename.toSimpleName == sym.name.toSimpleName).map(_.symbol)
290288
.orElse(typeSelections.map(_.symbol).find(sd => sd.name == sym.name))
291289
.orElse(simpleSelections.map(_.symbol).find(sd => sd.name == sym.name))
292290

0 commit comments

Comments
 (0)