@@ -600,7 +600,6 @@ object CheckUnused:
600
600
|| m.is(Synthetic )
601
601
|| m.hasAnnotation(dd.UnusedAnnot ) // param of unused method
602
602
|| sym.name.is(ContextFunctionParamName ) // a ubiquitous parameter
603
- || sym.isCanEqual
604
603
|| sym.info.dealias.typeSymbol.match // more ubiquity
605
604
case dd.DummyImplicitClass | dd.SubTypeClass | dd.SameTypeClass => true
606
605
case tps =>
@@ -632,7 +631,6 @@ object CheckUnused:
632
631
def checkLocal (sym : Symbol , pos : SrcPos ) =
633
632
if ctx.settings.WunusedHas .locals
634
633
&& ! sym.is(InlineProxy )
635
- && ! sym.isCanEqual
636
634
then
637
635
if sym.is(Mutable ) && infos.asss(sym) then
638
636
warnAt(pos)(UnusedSymbol .localVars)
@@ -664,8 +662,9 @@ object CheckUnused:
664
662
import scala .jdk .CollectionConverters .given
665
663
import Rewrites .ActionPatch
666
664
type ImpSel = (Import , ImportSelector )
665
+ // true if used or might be used, to imply don't warn about it
667
666
def isUsable (imp : Import , sel : ImportSelector ): Boolean =
668
- sel.isImportExclusion || infos.sels.containsKey(sel) || imp.isLoose(sel)
667
+ sel.isImportExclusion || infos.sels.containsKey(sel)
669
668
def warnImport (warnable : ImpSel , actions : List [CodeAction ] = Nil ): Unit =
670
669
val (imp, sel) = warnable
671
670
val msg = UnusedSymbol .imports(actions)
@@ -940,8 +939,6 @@ object CheckUnused:
940
939
def isSerializationSupport : Boolean =
941
940
sym.is(Method ) && serializationNames(sym.name.toTermName) && sym.owner.isClass
942
941
&& sym.owner.derivesFrom(defn.JavaSerializableClass )
943
- def isCanEqual : Boolean =
944
- sym.isOneOf(GivenOrImplicit ) && sym.info.finalResultType.baseClasses.exists(_.derivesFrom(defn.CanEqualClass ))
945
942
def isMarkerTrait : Boolean =
946
943
sym.info.hiBound.resultType.allMembers.forall: d =>
947
944
val m = d.symbol
@@ -981,21 +978,6 @@ object CheckUnused:
981
978
def isGeneratedByEnum : Boolean =
982
979
imp.symbol.exists && imp.symbol.owner.is(Enum , butNot = Case )
983
980
984
- /** Under -Wunused:strict-no-implicit-warn, avoid false positives
985
- * if this selector is a wildcard that might import implicits or
986
- * specifically does import an implicit.
987
- * Similarly, import of CanEqual must not warn, as it is always witness.
988
- */
989
- def isLoose (sel : ImportSelector ): Boolean =
990
- if ctx.settings.WunusedHas .strictNoImplicitWarn then
991
- if sel.isWildcard
992
- || imp.expr.tpe.member(sel.name.toTermName).hasAltWith(_.symbol.isOneOf(GivenOrImplicit ))
993
- || imp.expr.tpe.member(sel.name.toTypeName).hasAltWith(_.symbol.isOneOf(GivenOrImplicit ))
994
- then return true
995
- if sel.isWildcard && sel.isGiven
996
- then imp.expr.tpe.allMembers.exists(_.symbol.isCanEqual)
997
- else imp.expr.tpe.member(sel.name.toTermName).hasAltWith(_.symbol.isCanEqual)
998
-
999
981
extension (pos : SrcPos )
1000
982
def isZeroExtentSynthetic : Boolean = pos.span.isSynthetic && pos.span.isZeroExtent
1001
983
def isSynthetic : Boolean = pos.span.isSynthetic && pos.span.exists
0 commit comments