@@ -19,7 +19,7 @@ import dotty.tools.dotc.transform.TreeTransforms.{MiniPhaseTransform, Transforme
1919 * then `x` --> `(default value for T)`
2020 * `x.Y` --> `T#Y`
2121 */
22- class UnusedRefs extends MiniPhaseTransform with InfoTransformer {
22+ class UnusedRefs extends MiniPhaseTransform {
2323 import tpd ._
2424
2525 override def phaseName : String = " unusedRefs"
@@ -29,22 +29,9 @@ class UnusedRefs extends MiniPhaseTransform with InfoTransformer {
2929 )
3030
3131 /** Check what the phase achieves, to be called at any point after it is finished. */
32- override def checkPostCondition (tree : Tree )(implicit ctx : Context ): Unit = {
33- val checker = new TypeMap {
34- override def apply (tp : Type ): Type = tp match {
35- case tp : TermParamRef => assert(! tp.binder.isUnusedMethod); tp
36- case tp : TermRef if ! tp.symbol.is(Method ) => assert(! tp.symbol.is(Unused )); tp
37- case _ => mapOver(tp)
38- }
39- }
40- tree match {
41- case _ : ValDef =>
42- case _ : Apply | _ : RefTree =>
43- assert(! tree.symbol.is(Unused ))
44- checker.apply(tree.tpe)
45- case _ =>
46- checker.apply(tree.tpe)
47- }
32+ override def checkPostCondition (tree : Tree )(implicit ctx : Context ): Unit = tree match {
33+ case _ : Apply | _ : RefTree => assert(! tree.symbol.is(Unused ))
34+ case _ =>
4835 }
4936
5037 /* Tree transform */
@@ -70,26 +57,4 @@ class UnusedRefs extends MiniPhaseTransform with InfoTransformer {
7057 }
7158 }
7259 }
73-
74- override def transformTypeTree (tree : TypeTree )(implicit ctx : Context , info : TransformerInfo ): Tree = {
75- val newType = removeUnusedPaths(tree.tpe)
76- if (tree.tpe == newType) tree
77- else TypeTree (newType)
78- }
79-
80-
81- /* Tree info */
82-
83- override def transformInfo (tp : Type , sym : Symbol )(implicit ctx : Context ): Type = removeUnusedPaths(tp)
84-
85- private def removeUnusedPaths (tp : Type )(implicit ctx : Context ): Type = {
86- // TODO: handle variance
87- new TypeMap {
88- override def apply (tp : Type ): Type = tp match {
89- case tp : TermParamRef if tp.binder.isUnusedMethod => tp.classSymbol.typeRef
90- case tp : TermRef if tp.symbol.is(Unused ) => tp.widen
91- case _ => mapOver(tp)
92- }
93- }.apply(tp)
94- }
9560}
0 commit comments