Skip to content

Commit 30dfaa9

Browse files
committed
Revert "Append instead of prepending import selectors for the current scope when collecting them in CheckUnused (scala#22314)"
This reverts commit af655c9.
1 parent 9d7f439 commit 30dfaa9

File tree

2 files changed

+5
-32
lines changed

2 files changed

+5
-32
lines changed

compiler/src/dotty/tools/dotc/transform/CheckUnused.scala

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package dotty.tools.dotc.transform
22

33
import scala.annotation.tailrec
4-
import scala.collection.mutable
54

65
import dotty.tools.uncheckedNN
76
import dotty.tools.dotc.ast.tpd
@@ -25,7 +24,7 @@ import dotty.tools.dotc.core.Mode
2524
import dotty.tools.dotc.core.Types.{AnnotatedType, ConstantType, NoType, TermRef, Type, TypeTraverser}
2625
import dotty.tools.dotc.core.Flags.flagsString
2726
import dotty.tools.dotc.core.Flags
28-
import dotty.tools.dotc.core.Names.{Name, TermName}
27+
import dotty.tools.dotc.core.Names.Name
2928
import dotty.tools.dotc.core.NameOps.isReplWrapperName
3029
import dotty.tools.dotc.transform.MegaPhase.MiniPhase
3130
import 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] =

tests/warn/i21420.scala

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)