11package dotty .tools .dotc .transform
22
33import scala .annotation .tailrec
4- import scala .collection .mutable
54
65import dotty .tools .uncheckedNN
76import dotty .tools .dotc .ast .tpd
@@ -25,7 +24,7 @@ import dotty.tools.dotc.core.Mode
2524import dotty .tools .dotc .core .Types .{AnnotatedType , ConstantType , NoType , TermRef , Type , TypeTraverser }
2625import dotty .tools .dotc .core .Flags .flagsString
2726import dotty .tools .dotc .core .Flags
28- import dotty .tools .dotc .core .Names .{ Name , TermName }
27+ import dotty .tools .dotc .core .Names .Name
2928import dotty .tools .dotc .core .NameOps .isReplWrapperName
3029import dotty .tools .dotc .transform .MegaPhase .MiniPhase
3130import dotty .tools .dotc .core .Annotations
@@ -212,7 +211,7 @@ class CheckUnused private (phaseMode: CheckUnused.PhaseMode, suffix: String, _ke
212211 /**
213212 * This traverse is the **main** component of this phase
214213 *
215- * It traverses the tree and gathers the data in the
214+ * It traverse the tree the tree and gather the data in the
216215 * corresponding context property
217216 */
218217 private def traverser = new TreeTraverser :
@@ -457,21 +456,14 @@ object CheckUnused:
457456 val (wildcardSels, nonWildcardSels) = imp.selectors.partition(_.isWildcard)
458457 nonWildcardSels ::: wildcardSels
459458
460- val excludedMembers : mutable.Set [TermName ] = mutable.Set .empty
461-
462459 val newDataInScope =
463460 for sel <- reorderdSelectors yield
464461 val data = new ImportSelectorData (qualTpe, sel)
465462 if shouldSelectorBeReported(imp, sel) || isImportExclusion(sel) || isImportIgnored(imp, sel) then
466463 // Immediately mark the selector as used
467464 data.markUsed()
468- if isImportExclusion(sel) then
469- excludedMembers += sel.name
470- if sel.isWildcard && excludedMembers.nonEmpty then
471- // mark excluded members for the wildcard import
472- data.markExcluded(excludedMembers.toSet)
473465 data
474- impInScope.top.appendAll (newDataInScope)
466+ impInScope.top.prependAll (newDataInScope)
475467 end registerImport
476468
477469 /** Register (or not) some `val` or `def` according to the context, scope and flags */
@@ -711,7 +703,7 @@ object CheckUnused:
711703
712704 /** Given an import and accessibility, return selector that matches import<->symbol */
713705 private def isInImport (selData : ImportSelectorData , altName : Option [Name ], isDerived : Boolean )(using Context ): Boolean =
714- assert(sym.exists, s " Symbol $sym does not exist " )
706+ assert(sym.exists)
715707
716708 val selector = selData.selector
717709
@@ -727,10 +719,7 @@ object CheckUnused:
727719 selData.allSymbolsForNamed.contains(sym)
728720 else
729721 // Wildcard
730- if selData.excludedMembers.contains(altName.getOrElse(sym.name).toTermName) then
731- // Wildcard with exclusions that match the symbol
732- false
733- else if ! selData.qualTpe.member(sym.name).hasAltWith(_.symbol == sym) then
722+ if ! selData.qualTpe.member(sym.name).hasAltWith(_.symbol == sym) then
734723 // The qualifier does not have the target symbol as a member
735724 false
736725 else
@@ -843,14 +832,11 @@ object CheckUnused:
843832
844833 final class ImportSelectorData (val qualTpe : Type , val selector : ImportSelector ):
845834 private var myUsed : Boolean = false
846- var excludedMembers : Set [TermName ] = Set .empty
847835
848836 def markUsed (): Unit = myUsed = true
849837
850838 def isUsed : Boolean = myUsed
851839
852- def markExcluded (excluded : Set [TermName ]): Unit = excludedMembers ++= excluded
853-
854840 private var myAllSymbols : Set [Symbol ] | Null = null
855841
856842 def allSymbolsForNamed (using Context ): Set [Symbol ] =
0 commit comments