@@ -3,7 +3,7 @@ package transform
33
44import ast .* , desugar .{ForArtifact , PatternVar }, tpd .* , untpd .ImportSelector
55import config .ScalaSettings
6- import core .* , Contexts .* , Flags .*
6+ import core .* , Contexts .* , Decorators . * , Flags .*
77import Names .{Name , SimpleName , DerivedName , TermName , termName }
88import NameKinds .{BodyRetainerName , ContextBoundParamName , ContextFunctionParamName , DefaultGetterName , WildcardParamName }
99import NameOps .{isAnonymousFunctionName , isReplWrapperName , setterName }
@@ -148,7 +148,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
148148 tree
149149
150150 override def prepareForBind (tree : Bind )(using Context ): Context =
151- refInfos. register(tree)
151+ register(tree)
152152 ctx
153153 /* cf QuotePattern
154154 override def transformBind(tree: Bind)(using Context): tree.type =
@@ -166,7 +166,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
166166
167167 override def prepareForValDef (tree : ValDef )(using Context ): Context =
168168 if ! tree.symbol.is(Deferred ) && tree.rhs.symbol != defn.Predef_undefined then
169- refInfos. register(tree)
169+ register(tree)
170170 relax(tree.rhs, tree.tpt.tpe)
171171 ctx
172172 override def transformValDef (tree : ValDef )(using Context ): tree.type =
@@ -190,7 +190,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
190190 if tree.symbol.is(Inline ) then
191191 refInfos.inliners += 1
192192 else if ! tree.symbol.is(Deferred ) && tree.rhs.symbol != defn.Predef_undefined then
193- refInfos. register(tree)
193+ register(tree)
194194 relax(tree.rhs, tree.tpt.tpe)
195195 ctx
196196 override def transformDefDef (tree : DefDef )(using Context ): tree.type =
@@ -204,14 +204,13 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
204204 override def transformTypeDef (tree : TypeDef )(using Context ): tree.type =
205205 traverseAnnotations(tree.symbol)
206206 if ! tree.symbol.is(Param ) then // type parameter to do?
207- refInfos. register(tree)
207+ register(tree)
208208 tree
209209
210210 override def transformOther (tree : Tree )(using Context ): tree.type =
211211 tree match
212212 case imp : Import =>
213- if phaseMode eq PhaseMode .Aggregate then
214- refInfos.register(imp)
213+ register(imp)
215214 transformAllDeep(imp.expr)
216215 for selector <- imp.selectors do
217216 if selector.isGiven then
@@ -353,7 +352,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
353352 while ! done && ctxs.hasNext do
354353 val cur = ctxs.next()
355354 if cur.owner.userSymbol == sym && ! sym.is(Package ) then
356- enclosed = true // found enclosing definition, don't register the reference
355+ enclosed = true // found enclosing definition, don't record the reference
357356 if isLocal then
358357 if cur.owner eq sym.owner then
359358 done = true // for local def, just checking that it is not enclosing
@@ -393,6 +392,12 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
393392 if imports && candidate != NoContext && candidate.isImportContext && importer != null then
394393 refInfos.sels.put(importer, ())
395394 end resolveUsage
395+
396+ /** Register new element for warnings only at typer */
397+ def register (tree : Tree )(using Context ): Unit =
398+ if phaseMode eq PhaseMode .Aggregate then
399+ refInfos.register(tree)
400+
396401end CheckUnused
397402
398403object CheckUnused :
0 commit comments