aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/ElimLocals.scala
blob: 20afc8eb4dc403d9732eb93898e2d86601ff8e1d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package dotty.tools.dotc
package transform

import core._
import DenotTransformers.SymTransformer
import Phases.Phase
import Contexts.Context
import SymDenotations.SymDenotation
import TreeTransforms.MiniPhaseTransform
import Flags.Local

/** Widens all private[this] and protected[this] qualifiers to just private/protected */
class ElimLocals extends MiniPhaseTransform with SymTransformer { thisTransformer =>
  override def phaseName = "elimLocals"

  def transformSym(ref: SymDenotation)(implicit ctx: Context) =
    dropLocal(ref)

  private def dropLocal(ref: SymDenotation)(implicit ctx: Context) =
    if (ref.flags is Local) ref.copySymDenotation(initFlags = ref.flags &~ Local)
    else ref
}