@@ -5,13 +5,11 @@ import dotty.tools.dotc.core.Contexts._
5
5
import dotty .tools .dotc .core .DenotTransformers .InfoTransformer
6
6
import dotty .tools .dotc .core .Flags ._
7
7
import dotty .tools .dotc .core .Symbols ._
8
+ import dotty .tools .dotc .core .Phases .Phase
8
9
import dotty .tools .dotc .core .Types ._
9
10
import dotty .tools .dotc .transform .TreeTransforms .{MiniPhaseTransform , TransformerInfo }
10
11
11
12
/** This phase removes unused declarations of `def`s and `val`s (except for parameters).
12
- * It assumes that:
13
- * - Unused defs and vals are not used
14
- * - There are no unused parameter declarations
15
13
*
16
14
* `unused def f(...) = ...` and `unused val x = ...` are removed
17
15
*/
@@ -20,9 +18,8 @@ class UnusedDecls extends MiniPhaseTransform with InfoTransformer {
20
18
21
19
override def phaseName : String = " unusedDecls"
22
20
23
- override def runsAfterGroupsOf = Set (
24
- classOf [UnusedParams ], // ensure no unused parameters declarations
25
- classOf [UnusedRefs ] // ensures declarations are not used
21
+ override def runsAfterGroupsOf : Set [Class [_ <: Phase ]] = Set (
22
+ classOf [PatternMatcher ] // Make sure pattern match errors are emitted
26
23
)
27
24
28
25
/** Check what the phase achieves, to be called at any point after it is finished. */
@@ -34,13 +31,11 @@ class UnusedDecls extends MiniPhaseTransform with InfoTransformer {
34
31
35
32
/* Tree transform */
36
33
37
- override def transformDefDef (tree : DefDef )(implicit ctx : Context , info : TransformerInfo ): Tree =
38
- if (tree.symbol.is(Unused )) EmptyTree
39
- else tree
34
+ override def transformDefDef (tree : DefDef )(implicit ctx : Context , info : TransformerInfo ): Tree = transformValOrDefDef(tree)
35
+ override def transformValDef (tree : ValDef )(implicit ctx : Context , info : TransformerInfo ): Tree = transformValOrDefDef(tree)
40
36
41
- override def transformValDef (tree : ValDef )(implicit ctx : Context , info : TransformerInfo ): Tree =
42
- if (tree.symbol.is(Unused )) EmptyTree
43
- else tree
37
+ private def transformValOrDefDef (tree : ValOrDefDef )(implicit ctx : Context ): Tree =
38
+ if (tree.symbol is Unused ) EmptyTree else tree
44
39
45
40
46
41
/* Info transform */
0 commit comments