Skip to content

Commit d214b55

Browse files
committed
Compare getter and setter by .accessed instead of pos.point.
1 parent ff57fa8 commit d214b55

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -553,9 +553,9 @@ trait TypeDiagnostics {
553553
&& !(treeTypes.exists(tp => tp exists (t => t.typeSymbolDirect == m)))
554554
)
555555
def isSyntheticWarnable(sym: Symbol) = (
556-
sym.isDefaultGetter
556+
sym.isDefaultGetter
557557
)
558-
558+
559559
def isUnusedTerm(m: Symbol): Boolean = (
560560
m.isTerm
561561
&& (!m.isSynthetic || isSyntheticWarnable(m))
@@ -584,13 +584,15 @@ trait TypeDiagnostics {
584584

585585
def unusedTypes = defnTrees.toList.filter(t => isUnusedType(t.symbol)).sortBy(treepos)
586586
def unusedTerms = {
587+
def accessSameField(getter: Symbol, setter: Symbol): Boolean =
588+
getter.accessed == setter.accessed
587589
val all = defnTrees.toList.filter(v => isUnusedTerm(v.symbol))
588590

589591
// filter out setters if already warning for getter, indicated by position.
590592
// also documentary names in patterns.
591593
all.filterNot(v =>
592-
v.symbol.isSetter && all.exists(g => g.symbol.isGetter && g.symbol.pos.point == v.symbol.pos.point)
593-
|| atBounds.exists(x => v.symbol.pos.point == x.pos.point)
594+
v.symbol.isSetter && all.exists(g => g.symbol.isGetter && accessSameField(g.symbol, v.symbol))
595+
|| atBounds.exists(x => x.isGetter && accessSameField(v.symbol, x))
594596
).sortBy(treepos)
595597
}
596598
// local vars which are never set, except those already returned in unused

0 commit comments

Comments
 (0)