Skip to content

Commit bfa20a1

Browse files
committed
Fix -Wunused:locals,privates with recursive
1 parent 527aa31 commit bfa20a1

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

compiler/src/dotty/tools/dotc/transform/CheckUnused.scala

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,15 @@ class CheckUnused extends MiniPhase:
9595
override def prepareForValDef(tree: tpd.ValDef)(using Context): Context =
9696
_key.unusedDataApply{ud =>
9797
ud.registerDef(tree)
98-
if tree.symbol.is(Flags.Module) then
99-
ud.addIgnoredUsage(tree.symbol)
98+
ud.addIgnoredUsage(tree.symbol)
10099
}
101100

102101
override def prepareForDefDef(tree: tpd.DefDef)(using Context): Context =
103102
_key.unusedDataApply{ ud =>
104103
import ud.registerTrivial
105104
tree.registerTrivial
106105
ud.registerDef(tree)
106+
ud.addIgnoredUsage(tree.symbol)
107107
}
108108

109109
override def prepareForTypeDef(tree: tpd.TypeDef)(using Context): Context =
@@ -121,11 +121,6 @@ class CheckUnused extends MiniPhase:
121121

122122
// ========== MiniPhase Transform ==========
123123

124-
override def transformValDef(tree: tpd.ValDef)(using Context): tpd.Tree =
125-
if tree.symbol.is(Flags.Module) then
126-
_key.unusedDataApply(_.removeIgnoredUsage(tree.symbol))
127-
tree
128-
129124
override def transformBlock(tree: tpd.Block)(using Context): tpd.Tree =
130125
popOutBlockTemplatePackageDef()
131126
tree
@@ -138,6 +133,14 @@ class CheckUnused extends MiniPhase:
138133
popOutBlockTemplatePackageDef()
139134
tree
140135

136+
override def transformValDef(tree: tpd.ValDef)(using Context): tpd.Tree =
137+
_key.unusedDataApply(_.removeIgnoredUsage(tree.symbol))
138+
tree
139+
140+
override def transformDefDef(tree: tpd.DefDef)(using Context): tpd.Tree =
141+
_key.unusedDataApply(_.removeIgnoredUsage(tree.symbol))
142+
tree
143+
141144
override def transformTypeDef(tree: tpd.TypeDef)(using Context): tpd.Tree =
142145
_key.unusedDataApply(_.removeIgnoredUsage(tree.symbol))
143146
tree

tests/neg-custom-args/fatal-warnings/i15503c.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ class A:
1212
private[this] val f = e // OK
1313
private val g = f // OK
1414

15+
private def fac(x: Int): Int = // error
16+
if x == 0 then 1 else x * fac(x - 1)
17+
1518
val x = 1 // OK
1619
def y = 2 // OK
1720
def z = g // OK

0 commit comments

Comments
 (0)