@@ -15,19 +15,14 @@ import dotty.tools.dotc.reporting.Message
1515import dotty .tools .dotc .typer .ImportInfo
1616import dotty .tools .dotc .util .{Property , SrcPos }
1717import dotty .tools .dotc .core .Mode
18- import dotty .tools .dotc .core .Types .TypeTraverser
19- import dotty .tools .dotc .core .Types .Type
20- import dotty .tools .dotc .core .Types .AnnotatedType
18+ import dotty .tools .dotc .core .Types .{AnnotatedType , ConstantType , NoType , TermRef , Type , TypeTraverser }
2119import dotty .tools .dotc .core .Flags .flagsString
2220import dotty .tools .dotc .core .Flags
2321import dotty .tools .dotc .core .Names .Name
2422import dotty .tools .dotc .transform .MegaPhase .MiniPhase
2523import dotty .tools .dotc .core .Annotations
2624import dotty .tools .dotc .core .Definitions
27- import dotty .tools .dotc .core .Types .ConstantType
2825import dotty .tools .dotc .core .NameKinds .WildcardParamName
29- import dotty .tools .dotc .core .Types .TermRef
30- import dotty .tools .dotc .core .Types .NameFilter
3126import dotty .tools .dotc .core .Symbols .Symbol
3227
3328
@@ -82,6 +77,12 @@ class CheckUnused extends MiniPhase:
8277
8378 override def prepareForIdent (tree : tpd.Ident )(using Context ): Context =
8479 if tree.symbol.exists then
80+ val prefixes = LazyList .iterate(tree.typeOpt.normalizedPrefix)(_.normalizedPrefix).takeWhile(_ != NoType )
81+ for {
82+ prefix <- prefixes
83+ } {
84+ unusedDataApply(_.registerUsed(prefix.classSymbol, None ))
85+ }
8586 unusedDataApply(_.registerUsed(tree.symbol, Some (tree.name)))
8687 else if tree.hasType then
8788 unusedDataApply(_.registerUsed(tree.tpe.classSymbol, Some (tree.name)))
@@ -409,7 +410,6 @@ object CheckUnused:
409410 val kept = used.filterNot { t =>
410411 val (sym, isAccessible, optName) = t
411412 // keep the symbol for outer scope, if it matches **no** import
412-
413413 // This is the first matching wildcard selector
414414 var selWildCard : Option [ImportSelector ] = None
415415
0 commit comments