@@ -49,8 +49,9 @@ class PCPCheckAndHeal(@constructorOnly ictx: Context) extends TreeMapWithStages(
49
49
else tree match {
50
50
51
51
case _ : TypeTree | _ : RefTree if tree.isType =>
52
- if needsHealing(tree.tpe) then TypeTree (healType(tree.sourcePos)(tree.tpe)).withSpan(tree.span)
53
- else tree
52
+ val healedType = healType(tree.sourcePos)(tree.tpe)
53
+ if healedType == tree.tpe then tree
54
+ else TypeTree (healedType).withSpan(tree.span)
54
55
55
56
case _ : This =>
56
57
if level != levelOf(tree.symbol) then
@@ -135,21 +136,7 @@ class PCPCheckAndHeal(@constructorOnly ictx: Context) extends TreeMapWithStages(
135
136
136
137
/** Heal types in the info of the given tree */
137
138
private def healInfo (tree : Tree , pos : SourcePosition )(using Context ): Unit =
138
- if needsHealing(tree.symbol.info) then
139
- tree.symbol.info = healType(pos)(tree.symbol.info)
140
-
141
- /** Does this type contain a phase inconsistent reference? */
142
- private def needsHealing (tp : Type )(using Context ) = new ExistsAccumulator (
143
- _ match
144
- case tp @ TypeRef (NoPrefix , _) =>
145
- level > levelOf(tp.symbol)
146
- case tp @ TermRef (NoPrefix , _) =>
147
- level != levelOf(tp.symbol)
148
- case tp : ThisType =>
149
- level != levelOf(tp.cls)
150
- case tp =>
151
- tp.typeSymbol.isSplice && level > 0
152
- ).apply(false , tp)
139
+ tree.symbol.info = healType(pos)(tree.symbol.info)
153
140
154
141
private def healType (pos : SourcePosition )(using Context ) = new TypeMap {
155
142
def apply (tp : Type ): Type =
0 commit comments