@@ -12,7 +12,7 @@ import dotty.tools.dotc.core.Denotations.SingleDenotation
12
12
import dotty .tools .dotc .core .Flags .*
13
13
import dotty .tools .dotc .core .Phases .Phase
14
14
import dotty .tools .dotc .core .StdNames .nme
15
- import dotty .tools .dotc .core .Types .{AnnotatedType , ClassInfo , ConstantType , NamedType , NoType , TermRef , Type , TypeProxy , TypeTraverser }
15
+ import dotty .tools .dotc .core .Types .{AnnotatedType , ClassInfo , ConstantType , NamedType , NoPrefix , NoType , TermRef , Type , TypeProxy , TypeTraverser }
16
16
import dotty .tools .dotc .core .Flags
17
17
import dotty .tools .dotc .core .Names .{Name , TermName , termName }
18
18
import dotty .tools .dotc .core .NameOps .isReplWrapperName
@@ -87,14 +87,6 @@ class CheckUnused private (phaseMode: CheckUnused.PhaseMode, suffix: String, _ke
87
87
ud.registerUsed(tree.symbol, name, tree.qualifier.tpe, includeForImport = tree.qualifier.span.isSynthetic, tree = tree)
88
88
tree
89
89
90
- override def transformApply (tree : Apply )(using Context ): Tree =
91
- tree
92
-
93
- override def transformTyped (tree : Typed )(using Context ): Tree =
94
- tree match
95
- case Typed (expr, tpt) =>
96
- tree
97
-
98
90
override def transformAssign (tree : Assign )(using Context ): tree.type =
99
91
preparing :
100
92
val sym = tree.lhs.symbol
@@ -113,12 +105,10 @@ class CheckUnused private (phaseMode: CheckUnused.PhaseMode, suffix: String, _ke
113
105
transformAllDeep(tree.call)
114
106
tree
115
107
116
- override def prepareForTypeTree (tree : TypeTree )(using Context ): Context = ctx
117
-
118
108
override def transformTypeTree (tree : TypeTree )(using Context ): tree.type =
119
109
tree.tpe match
120
110
case AnnotatedType (_, annot) => transformAllDeep(annot.tree)
121
- case tpt if tpt.typeSymbol.exists =>
111
+ case tpt if ! tree.isInferred && tpt.typeSymbol.exists =>
122
112
preparing :
123
113
ud.registerUsed(tpt.typeSymbol, Some (tpt.typeSymbol.name), tree = tree) // usage was a simple name
124
114
case _ =>
@@ -192,12 +182,6 @@ class CheckUnused private (phaseMode: CheckUnused.PhaseMode, suffix: String, _ke
192
182
popScope(tree)
193
183
tree
194
184
195
- override def prepareForStats (trees : List [Tree ])(using Context ): Context = ctx
196
-
197
- override def transformStats (trees : List [Tree ])(using Context ): List [Tree ] =
198
- super .transformStats(trees)
199
- trees
200
-
201
185
override def transformOther (tree : Tree )(using Context ): tree.type =
202
186
preparing :
203
187
tree match
@@ -377,7 +361,7 @@ object CheckUnused:
377
361
* The optional name will be used to target the right import
378
362
* as the same element can be imported with different renaming.
379
363
*/
380
- def registerUsed (sym : Symbol , name : Option [Name ], prefix : Type = NoType , includeForImport : Boolean = true , tree : Tree )(using Context ): Unit =
364
+ def registerUsed (sym : Symbol , name : Option [Name ], prefix : Type = NoPrefix , includeForImport : Boolean = true , tree : Tree )(using Context ): Unit =
381
365
if sym.exists && ! isConstructorOfSynth(sym) && ! doNotRegister(sym) && ! doNotRegisterPrefix(prefix.typeSymbol) then
382
366
if sym.isConstructor then
383
367
// constructors are "implicitly" imported with the class
@@ -647,7 +631,7 @@ object CheckUnused:
647
631
}
648
632
else
649
633
! altName.exists(_.toTermName != selector.rename) && // if there is an explicit name, it must match
650
- selData.qualTpe =:= prefix && selData.allSymbolsForNamed.contains(sym)
634
+ (prefix.eq( NoPrefix ) || selData.qualTpe =:= prefix) && selData.allSymbolsForNamed.contains(sym)
651
635
end isInImport
652
636
653
637
/** Annotated with @unused */
0 commit comments