@@ -590,12 +590,13 @@ object CheckUnused:
590590 private def isInImport (imp : tpd.Import , isAccessible : Boolean , symName : Option [Name ])(using Context ): Option [ImportSelector ] =
591591 val tpd .Import (qual, sels) = imp
592592 val dealiasedSym = dealias(sym)
593+ val simpleSelections = qual.tpe.member(sym.name).alternatives
593594 val typeSelections = sels.flatMap(n => qual.tpe.member(n.name.toTypeName).alternatives)
594595 val termSelections = sels.flatMap(n => qual.tpe.member(n.name.toTermName).alternatives)
595- val allSelections = typeSelections ::: termSelections ::: qual.tpe.member(sym.name).alternatives
596- val qualHasSymbol = allSelections .map(_.symbol).map(dealias).contains(dealiasedSym)
596+ val selectionsToDealias = typeSelections ::: termSelections
597+ val qualHasSymbol = simpleSelections.map(_.symbol).contains(sym) || (simpleSelections ::: selectionsToDealias) .map(_.symbol).map(dealias).contains(dealiasedSym)
597598 def selector = sels.find(sel => (sel.name.toTermName == sym.name || sel.name.toTypeName == sym.name) && symName.map(n => n.toTermName == sel.rename).getOrElse(true ))
598- def dealiasedSelector = sels.flatMap(sel => allSelections .map(m => (sel, m.symbol))).collect {
599+ def dealiasedSelector = sels.flatMap(sel => selectionsToDealias .map(m => (sel, m.symbol))).collect {
599600 case (sel, sym) if dealias(sym) == dealiasedSym => sel
600601 }.headOption
601602 def wildcard = sels.find(sel => sel.isWildcard && ((sym.is(Given ) == sel.isGiven) || sym.is(Implicit )))
@@ -604,6 +605,7 @@ object CheckUnused:
604605 else
605606 None
606607
608+
607609 private def dealias (symbol : Symbol )(using Context ): Symbol =
608610 if (symbol.isType && symbol.asType.denot.isAliasType) then
609611 symbol.asType.typeRef.dealias.typeSymbol
0 commit comments