@@ -82,7 +82,10 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
8282 && tree.qualifier.tpe.match
8383 case ThisType (_) | SuperType (_, _) => false
8484 case qualtpe => qualtpe.isStable
85- if tree.srcPos.isSynthetic && tree.symbol == defn.TypeTest_unapply then
85+ val sym = tree.symbol
86+ .orElse:
87+ tree.typeOpt.resultType.typeSymbol
88+ if tree.srcPos.isSynthetic && sym == defn.TypeTest_unapply then
8689 tree.qualifier.tpe.underlying.finalResultType match
8790 case AppliedType (tycon, args) =>
8891 val res =
@@ -92,11 +95,11 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
9295 val target = res.dealias.typeSymbol
9396 resolveUsage(target, target.name, res.importPrefix.skipPackageObject) // case _: T =>
9497 case _ =>
95- else if isImportable || name.exists(_ != tree.symbol .name) then
98+ else if isImportable || name.exists(_ != sym .name) then
9699 if ! ignoreTree(tree) then
97- resolveUsage(tree.symbol , name, tree.qualifier.tpe)
100+ resolveUsage(sym , name, tree.qualifier.tpe)
98101 else if ! ignoreTree(tree) then
99- refUsage(tree.symbol )
102+ refUsage(sym )
100103 refInfos.isAssignment = false
101104 tree
102105
@@ -126,6 +129,11 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
126129 case _ =>
127130 tree
128131
132+ override def transformTypeApply (tree : TypeApply )(using Context ): tree.type =
133+ if tree.symbol.exists && tree.symbol.isConstructor then
134+ refUsage(tree.symbol.owner) // redundant with use of resultType in transformSelect of fun
135+ tree
136+
129137 override def prepareForAssign (tree : Assign )(using Context ): Context =
130138 tree.lhs.putAttachment(AssignmentTarget , ()) // don't take LHS reference as a read
131139 ctx
0 commit comments