File tree 1 file changed +6
-4
lines changed
src/compiler/scala/tools/nsc/typechecker 1 file changed +6
-4
lines changed Original file line number Diff line number Diff line change @@ -553,9 +553,9 @@ trait TypeDiagnostics {
553
553
&& ! (treeTypes.exists(tp => tp exists (t => t.typeSymbolDirect == m)))
554
554
)
555
555
def isSyntheticWarnable (sym : Symbol ) = (
556
- sym.isDefaultGetter
556
+ sym.isDefaultGetter
557
557
)
558
-
558
+
559
559
def isUnusedTerm (m : Symbol ): Boolean = (
560
560
m.isTerm
561
561
&& (! m.isSynthetic || isSyntheticWarnable(m))
@@ -584,13 +584,15 @@ trait TypeDiagnostics {
584
584
585
585
def unusedTypes = defnTrees.toList.filter(t => isUnusedType(t.symbol)).sortBy(treepos)
586
586
def unusedTerms = {
587
+ def accessSameField (getter : Symbol , setter : Symbol ): Boolean =
588
+ getter.accessed == setter.accessed
587
589
val all = defnTrees.toList.filter(v => isUnusedTerm(v.symbol))
588
590
589
591
// filter out setters if already warning for getter, indicated by position.
590
592
// also documentary names in patterns.
591
593
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) )
594
596
).sortBy(treepos)
595
597
}
596
598
// local vars which are never set, except those already returned in unused
You can’t perform that action at this time.
0 commit comments