dotty.tools.dotc.transform

PostTyper

Related Doc: package transform

class PostTyper extends MacroTransform with IdentityDenotTransformer

A macro transform that runs immediately after typer and that performs the following functions:

(1) Add super accessors and protected accessors (@see SuperAccessors)

(2) Convert parameter fields that have the same name as a corresponding public parameter field in a superclass to a forwarder to the superclass field (corresponding = super class field is initialized with subclass field) (@see ForwardParamAccessors)

(3) Add synthetic methods (@see SyntheticMethods)

(4) Check that New nodes can be instantiated, and that annotations are valid

(5) Convert all trees representing types to TypeTrees.

(6) Check the bounds of AppliedTypeTrees

(7) Insert .package for selections of package object members

(8) Replaces self references by name with this

(9) Adds SourceFile annotations to all top-level classes and objects

(10) Adds Child annotations to all sealed classes

(11) Minimizes call fields of Inline nodes to just point to the toplevel class from which code was inlined.

The reason for making this a macro transform is that some functions (in particular super and protected accessors and instantiation checks) are naturally top-down and don't lend themselves to the bottom-up approach of a mini phase. The other two functions (forwarding param accessors and synthetic methods) only apply to templates and fit mini-phase or subfunction of a macro phase equally well. But taken by themselves they do not warrant their own group of miniphases before pickling.

Self Type
PostTyper
Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. PostTyper
  2. IdentityDenotTransformer
  3. DenotTransformer
  4. MacroTransform
  5. Phase
  6. DotClass
  7. AnyRef
  8. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new PostTyper()

Type Members

  1. class PostTyperTransformer extends Transformer

  2. class Transformer extends ast.tpd.TreeMap

    Definition Classes
    MacroTransform

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def <=(that: Phase): Boolean

    Definition Classes
    Phase
  4. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  5. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  6. def checkPostCondition(tree: ast.tpd.Tree)(implicit ctx: Context): Unit

    Check what the phase achieves, to be called at any point after it is finished.

    Check what the phase achieves, to be called at any point after it is finished.

    Definition Classes
    Phase
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. def description: String

    Definition Classes
    Phase
  9. def end: PhaseId

    Definition Classes
    Phase
  10. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  12. final def erasedTypes: Boolean

    Definition Classes
    Phase
  13. def exists: Boolean

    Definition Classes
    Phase
  14. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  15. final def flatClasses: Boolean

    Definition Classes
    Phase
  16. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  17. final def hasNext: Boolean

    Definition Classes
    Phase
  18. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  19. def id: Int

    The sequence position of this phase in the given context where 0 is reserved for NoPhase and the first real phase is at position 1.

    The sequence position of this phase in the given context where 0 is reserved for NoPhase and the first real phase is at position 1. -1 if the phase is not installed in the context.

    Definition Classes
    Phase
  20. def init(base: ContextBase, id: Int): Unit

    Attributes
    protected[dotty.tools.dotc.core.Phases]
    Definition Classes
    Phase
  21. def init(base: ContextBase, start: Int, end: Int): Unit

    Attributes
    protected[dotty.tools.dotc.core.Phases]
    Definition Classes
    Phase
  22. def isCheckable: Boolean

    Output should be checkable by TreeChecker

    Output should be checkable by TreeChecker

    Definition Classes
    Phase
  23. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  24. def isTyper: Boolean

    Is this phase the standard typerphase? True for FrontEnd, but not for other first phases (such as FromTasty).

    Is this phase the standard typerphase? True for FrontEnd, but not for other first phases (such as FromTasty). The predicate is tested in some places that perform checks and corrections. It's different from isAfterTyper (and cheaper to test).

    Definition Classes
    Phase
  25. final def iterator: Iterator[Phase]

    Definition Classes
    Phase
  26. final def labelsReordered: Boolean

    Definition Classes
    Phase
  27. def lastPhaseId(implicit ctx: Context): Int

    The last phase during which the transformed denotations are valid

    The last phase during which the transformed denotations are valid

    Definition Classes
    DenotTransformer
  28. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  29. def newTransformer(implicit ctx: Context): Transformer

    Attributes
    protected
    Definition Classes
    PostTyperMacroTransform
  30. final def next: Phase

    Definition Classes
    Phase
  31. final def notify(): Unit

    Definition Classes
    AnyRef
  32. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  33. val paramFwd: ParamForwarding

  34. def period: Period

    Definition Classes
    Phase
  35. def phaseName: String

    the following two members override abstract members in Transform

    the following two members override abstract members in Transform

    Definition Classes
    PostTyperPhase
  36. final def prev: Phase

    Definition Classes
    Phase
  37. final def refChecked: Boolean

    Definition Classes
    Phase
  38. def relaxedTyping: Boolean

    If set, allow missing or superfluous arguments in applications and type applications.

    If set, allow missing or superfluous arguments in applications and type applications.

    Definition Classes
    Phase
  39. def run(implicit ctx: Context): Unit

    Definition Classes
    MacroTransformPhase
  40. def runOn(units: List[CompilationUnit])(implicit ctx: Context): List[CompilationUnit]

    Definition Classes
    Phase
  41. def runsAfter: Set[Class[_ <: Phase]]

    List of names of phases that should precede this phase

    List of names of phases that should precede this phase

    Definition Classes
    Phase
  42. def start: Int

    Definition Classes
    Phase
  43. val superAcc: SuperAccessors

  44. final def symbolicRefs: Boolean

    Definition Classes
    Phase
  45. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  46. val synthMth: SyntheticMethods

  47. def toString(): String

    Definition Classes
    Phase → AnyRef → Any
  48. def transform(ref: SingleDenotation)(implicit ctx: Context): SingleDenotation

    The transformation method

    The transformation method

    Definition Classes
    IdentityDenotTransformerDenotTransformer
  49. def transformPhase(implicit ctx: Context): Phase

    The phase in which the transformation should be run.

    The phase in which the transformation should be run. By default this is the phase given by the this macro transformer, but it could be overridden to be the phase following that one.

    Definition Classes
    PostTyperMacroTransform
  50. def unsupported(methodName: String): Nothing

    Throws an UnsupportedOperationException with the given method name.

    Throws an UnsupportedOperationException with the given method name.

    Definition Classes
    DotClass
  51. def validFor(implicit ctx: Context): Period

    The validity period of the transformer in the given context

    The validity period of the transformer in the given context

    Definition Classes
    DenotTransformer
  52. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  53. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  54. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from IdentityDenotTransformer

Inherited from DenotTransformer

Inherited from MacroTransform

Inherited from Phase

Inherited from DotClass

Inherited from AnyRef

Inherited from Any

Ungrouped