@@ -158,8 +158,8 @@ class CheckShadowing extends MiniPhase:
158
158
override def traverse (tree : tpd.Tree )(using Context ): Unit =
159
159
tree match
160
160
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)
163
163
case _ =>
164
164
traverseChildren(tree)
165
165
@@ -180,9 +180,9 @@ object CheckShadowing:
180
180
private val renamedImports = MutStack [MutMap [SimpleName , Name ]]() // original name -> renamed name
181
181
182
182
private val typeParamCandidates = MutMap [Symbol , Seq [tpd.TypeDef ]]().withDefaultValue(Seq ())
183
- private val shadowedTypeDefs = MutSet [TypeParamShadowWarning ]()
183
+ private val typeParamShadowWarnings = MutSet [TypeParamShadowWarning ]()
184
184
185
- private val shadowedPrivateDefs = MutSet [PrivateShadowWarning ]()
185
+ private val privateShadowWarnings = MutSet [PrivateShadowWarning ]()
186
186
187
187
def inNewScope ()(using Context ) =
188
188
explicitsImports.push(MutSet ())
@@ -194,7 +194,6 @@ object CheckShadowing:
194
194
195
195
/** Register the Root imports (at once per compilation unit)*/
196
196
def registerRootImports ()(using Context ) =
197
- ctx.definitions.rootImportTypes.foreach(rimp => println())
198
197
val langPackageName = ctx.definitions.JavaLangPackageVal .name.toSimpleName // excludes lang package
199
198
rootImports.addAll(ctx.definitions.rootImportTypes.withFilter(_.name.toSimpleName != langPackageName).flatMap(_.typeMembers))
200
199
@@ -222,7 +221,7 @@ object CheckShadowing:
222
221
.orElse(lookForUnitShadowedType(sym))
223
222
shadowedType.foreach(shadowed =>
224
223
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)
226
225
)
227
226
})
228
227
@@ -247,7 +246,7 @@ object CheckShadowing:
247
246
/** Register if the valDef is a private declaration that shadows an inherited field */
248
247
def registerPrivateShadows (valDef : tpd.ValDef )(using Context ): Unit =
249
248
lookForShadowedField(valDef.symbol).foreach(shadowedField =>
250
- shadowedPrivateDefs += PrivateShadowWarning (valDef.startPos, valDef.symbol, shadowedField)
249
+ privateShadowWarnings += PrivateShadowWarning (valDef.startPos, valDef.symbol, shadowedField)
251
250
)
252
251
253
252
private def lookForShadowedField (symDecl : Symbol )(using Context ): Option [Symbol ] =
@@ -266,27 +265,26 @@ object CheckShadowing:
266
265
267
266
/** Get the shadowing analysis's result */
268
267
def getShadowingResult (using Context ): ShadowResult =
269
-
270
- val privateShadowWarnings : List [ShadowWarning ] =
268
+ val privateWarnings : List [ShadowWarning ] =
271
269
if ctx.settings.XlintHas .privateShadow then
272
- shadowedPrivateDefs .toList
270
+ privateShadowWarnings .toList
273
271
else
274
272
Nil
275
- val typeParamShadowWarnings : List [ShadowWarning ] =
273
+ val typeParamWarnings : List [ShadowWarning ] =
276
274
if ctx.settings.XlintHas .typeParameterShadow then
277
- shadowedTypeDefs .toList
275
+ typeParamShadowWarnings .toList
278
276
else
279
277
Nil
280
- ShadowResult (privateShadowWarnings ++ typeParamShadowWarnings )
278
+ ShadowResult (privateWarnings ++ typeParamWarnings )
281
279
282
280
extension (sym : Symbol )
283
281
/** Given an import and accessibility, return the import's symbol that matches import<->this symbol */
284
282
private def isInImport (imp : tpd.Import )(using Context ): Option [Symbol ] =
285
283
val tpd .Import (qual, sels) = imp
286
284
val simpleSelections = qual.tpe.member(sym.name).alternatives
287
285
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)
290
288
.orElse(typeSelections.map(_.symbol).find(sd => sd.name == sym.name))
291
289
.orElse(simpleSelections.map(_.symbol).find(sd => sd.name == sym.name))
292
290
0 commit comments