diff --git a/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala b/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala index 2ee3ea825edc..ecd59a40619e 100644 --- a/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala +++ b/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala @@ -292,7 +292,9 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha def matchingSelector(info: ImportInfo): ImportSelector | Null = val qtpe = info.site - def hasAltMember(nm: Name) = qtpe.member(nm).hasAltWith(_.symbol == sym) + def hasAltMember(nm: Name) = qtpe.member(nm).hasAltWith: alt => + alt.symbol == sym + || nm.isTypeName && alt.symbol.isAliasType && alt.info.dealias.typeSymbol == sym def loop(sels: List[ImportSelector]): ImportSelector | Null = sels match case sel :: sels => val matches = diff --git a/tests/warn/i22787.scala b/tests/warn/i22787.scala new file mode 100644 index 000000000000..2d01f12c5f12 --- /dev/null +++ b/tests/warn/i22787.scala @@ -0,0 +1,19 @@ +//> using options -Wunused:imports -Werror + +object tpd: + type Block = Trees.Block + +object Trees: + abstract case class Block(x: Int) + private object Block + val block = new Block(42) {} + +def f(x: Any) = + import tpd.Block + //import Trees.Block + x match + case Block(_) => "yes" + case _ => "no" + +@main def test = println: + f(Trees.block)