Skip to content

Commit

Permalink
Rename on import is never wildcard
Browse files Browse the repository at this point in the history
  • Loading branch information
som-snytt committed Mar 7, 2025
1 parent b092197 commit 977232c
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
5 changes: 4 additions & 1 deletion compiler/src/dotty/tools/dotc/transform/CheckUnused.scala
Original file line number Diff line number Diff line change
Expand Up @@ -284,8 +284,11 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
case sel :: sels =>
val matches =
if sel.isWildcard then
// if name is different from sym.name, it must be a rename on import, not a wildcard selector
!name.exists(_.toTermName != sym.name.toTermName)
// the qualifier must have the target symbol as a member
hasAltMember(sym.name) && {
&& hasAltMember(sym.name)
&& {
if sel.isGiven then // Further check that the symbol is a given or implicit and conforms to the bound
sym.isOneOf(GivenOrImplicit)
&& (sel.bound.isEmpty || sym.info.finalResultType <:< sel.boundTpe)
Expand Down
7 changes: 7 additions & 0 deletions tests/warn/i15503a.scala
Original file line number Diff line number Diff line change
Expand Up @@ -321,3 +321,10 @@ object Suppressed:
object Suppressing:
import Suppressed.* // no warn, see options
def f = 42

package i22692:
import javax.swing.*
import javax.swing.event as swingEvent // no warn, regression test for warning in 3.6

type b = AbstractButton
type t = swingEvent.AncestorListener

0 comments on commit 977232c

Please sign in to comment.