@@ -568,7 +568,6 @@ object CheckUnused:
568568 || m.is(Synthetic )
569569 || m.hasAnnotation(dd.UnusedAnnot ) // param of unused method
570570 || sym.owner.name.isContextFunction // a ubiquitous parameter
571- || sym.isCanEqual
572571 || sym.info.dealias.typeSymbol.match // more ubiquity
573572 case dd.DummyImplicitClass | dd.SubTypeClass | dd.SameTypeClass => true
574573 case tps =>
@@ -600,7 +599,6 @@ object CheckUnused:
600599 def checkLocal (sym : Symbol , pos : SrcPos ) =
601600 if ctx.settings.WunusedHas .locals
602601 && ! sym.is(InlineProxy )
603- && ! sym.isCanEqual
604602 then
605603 if sym.is(Mutable ) && infos.asss(sym) then
606604 warnAt(pos)(UnusedSymbol .localVars)
@@ -632,8 +630,9 @@ object CheckUnused:
632630 import scala .jdk .CollectionConverters .given
633631 import Rewrites .ActionPatch
634632 type ImpSel = (Import , ImportSelector )
633+ // true if used or might be used, to imply don't warn about it
635634 def isUsable (imp : Import , sel : ImportSelector ): Boolean =
636- sel.isImportExclusion || infos.sels.containsKey(sel) || imp.isLoose(sel)
635+ sel.isImportExclusion || infos.sels.containsKey(sel)
637636 def warnImport (warnable : ImpSel , actions : List [CodeAction ] = Nil ): Unit =
638637 val (imp, sel) = warnable
639638 val msg = UnusedSymbol .imports(actions)
@@ -908,8 +907,6 @@ object CheckUnused:
908907 def isSerializationSupport : Boolean =
909908 sym.is(Method ) && serializationNames(sym.name.toTermName) && sym.owner.isClass
910909 && sym.owner.derivesFrom(defn.JavaSerializableClass )
911- def isCanEqual : Boolean =
912- sym.isOneOf(GivenOrImplicit ) && sym.info.finalResultType.baseClasses.exists(_.derivesFrom(defn.CanEqualClass ))
913910 def isMarkerTrait : Boolean =
914911 sym.info.hiBound.resultType.allMembers.forall: d =>
915912 val m = d.symbol
@@ -949,21 +946,6 @@ object CheckUnused:
949946 def isGeneratedByEnum : Boolean =
950947 imp.symbol.exists && imp.symbol.owner.is(Enum , butNot = Case )
951948
952- /** Under -Wunused:strict-no-implicit-warn, avoid false positives
953- * if this selector is a wildcard that might import implicits or
954- * specifically does import an implicit.
955- * Similarly, import of CanEqual must not warn, as it is always witness.
956- */
957- def isLoose (sel : ImportSelector ): Boolean =
958- if ctx.settings.WunusedHas .strictNoImplicitWarn then
959- if sel.isWildcard
960- || imp.expr.tpe.member(sel.name.toTermName).hasAltWith(_.symbol.isOneOf(GivenOrImplicit ))
961- || imp.expr.tpe.member(sel.name.toTypeName).hasAltWith(_.symbol.isOneOf(GivenOrImplicit ))
962- then return true
963- if sel.isWildcard && sel.isGiven
964- then imp.expr.tpe.allMembers.exists(_.symbol.isCanEqual)
965- else imp.expr.tpe.member(sel.name.toTermName).hasAltWith(_.symbol.isCanEqual)
966-
967949 extension (pos : SrcPos )
968950 def isZeroExtentSynthetic : Boolean = pos.span.isSynthetic && pos.span.isZeroExtent
969951 def isSynthetic : Boolean = pos.span.isSynthetic && pos.span.exists
0 commit comments