Dotty Documentation

0.11.0-bin-SNAPSHOT

class MegaPhase
extends Object with Phase

[-] Constructors

MegaPhase ( miniPhases: Array [ MiniPhase ] )

[-] Members

[+] private val clsMethodsCache : IdentityHashMap [ Class [ Nothing <: Any ], Array [ Method ] ]

Class#getDeclaredMethods is slow, so we cache its output

[+] private val cpy : TypedTreeCopier
[+] private val emptyNxArray : Array [ MiniPhase ]
[+] val miniPhases : Array [ MiniPhase ]
[+] private val nxAlternativePrepPhase : Array [ MiniPhase ]
[+] private val nxAlternativeTransPhase : Array [ MiniPhase ]
[+] private val nxApplyPrepPhase : Array [ MiniPhase ]
[+] private val nxApplyTransPhase : Array [ MiniPhase ]
[+] private val nxAssignPrepPhase : Array [ MiniPhase ]
[+] private val nxAssignTransPhase : Array [ MiniPhase ]
[+] private val nxBindPrepPhase : Array [ MiniPhase ]
[+] private val nxBindTransPhase : Array [ MiniPhase ]
[+] private val nxBlockPrepPhase : Array [ MiniPhase ]
[+] private val nxBlockTransPhase : Array [ MiniPhase ]
[+] private val nxCaseDefPrepPhase : Array [ MiniPhase ]
[+] private val nxCaseDefTransPhase : Array [ MiniPhase ]
[+] private val nxClosurePrepPhase : Array [ MiniPhase ]
[+] private val nxClosureTransPhase : Array [ MiniPhase ]
[+] private val nxDefDefPrepPhase : Array [ MiniPhase ]
[+] private val nxDefDefTransPhase : Array [ MiniPhase ]
[+] private val nxIdentPrepPhase : Array [ MiniPhase ]
[+] private val nxIdentTransPhase : Array [ MiniPhase ]
[+] private val nxIfPrepPhase : Array [ MiniPhase ]
[+] private val nxIfTransPhase : Array [ MiniPhase ]
[+] private val nxInlinedPrepPhase : Array [ MiniPhase ]
[+] private val nxInlinedTransPhase : Array [ MiniPhase ]
[+] private val nxLabeledPrepPhase : Array [ MiniPhase ]
[+] private val nxLabeledTransPhase : Array [ MiniPhase ]
[+] private val nxLiteralPrepPhase : Array [ MiniPhase ]
[+] private val nxLiteralTransPhase : Array [ MiniPhase ]
[+] private val nxMatchPrepPhase : Array [ MiniPhase ]
[+] private val nxMatchTransPhase : Array [ MiniPhase ]
[+] private val nxNewPrepPhase : Array [ MiniPhase ]
[+] private val nxNewTransPhase : Array [ MiniPhase ]
[+] private val nxOtherPrepPhase : Array [ MiniPhase ]
[+] private val nxOtherTransPhase : Array [ MiniPhase ]
[+] private val nxPackageDefPrepPhase : Array [ MiniPhase ]
[+] private val nxPackageDefTransPhase : Array [ MiniPhase ]
[+] private val nxReturnPrepPhase : Array [ MiniPhase ]
[+] private val nxReturnTransPhase : Array [ MiniPhase ]
[+] private val nxSelectPrepPhase : Array [ MiniPhase ]
[+] private val nxSelectTransPhase : Array [ MiniPhase ]
[+] private val nxSeqLiteralPrepPhase : Array [ MiniPhase ]
[+] private val nxSeqLiteralTransPhase : Array [ MiniPhase ]
[+] private val nxStatsPrepPhase : Array [ MiniPhase ]
[+] private val nxStatsTransPhase : Array [ MiniPhase ]
[+] private val nxSuperPrepPhase : Array [ MiniPhase ]
[+] private val nxSuperTransPhase : Array [ MiniPhase ]
[+] private val nxTemplatePrepPhase : Array [ MiniPhase ]
[+] private val nxTemplateTransPhase : Array [ MiniPhase ]
[+] private val nxThisPrepPhase : Array [ MiniPhase ]
[+] private val nxThisTransPhase : Array [ MiniPhase ]
[+] private val nxTryPrepPhase : Array [ MiniPhase ]
[+] private val nxTryTransPhase : Array [ MiniPhase ]
[+] private val nxTypeApplyPrepPhase : Array [ MiniPhase ]
[+] private val nxTypeApplyTransPhase : Array [ MiniPhase ]
[+] private val nxTypeDefPrepPhase : Array [ MiniPhase ]
[+] private val nxTypeDefTransPhase : Array [ MiniPhase ]
[+] private val nxTypeTreePrepPhase : Array [ MiniPhase ]
[+] private val nxTypeTreeTransPhase : Array [ MiniPhase ]
[+] private val nxTypedPrepPhase : Array [ MiniPhase ]
[+] private val nxTypedTransPhase : Array [ MiniPhase ]
[+] private val nxUnApplyPrepPhase : Array [ MiniPhase ]
[+] private val nxUnApplyTransPhase : Array [ MiniPhase ]
[+] private val nxUnitPrepPhase : Array [ MiniPhase ]
[+] private val nxUnitTransPhase : Array [ MiniPhase ]
[+] private val nxValDefPrepPhase : Array [ MiniPhase ]
[+] private val nxValDefTransPhase : Array [ MiniPhase ]
[+] private val nxWhileDoPrepPhase : Array [ MiniPhase ]
[+] private val nxWhileDoTransPhase : Array [ MiniPhase ]
[+] override val phaseName : String

A name given to the Phase that can be used to debug the compiler. For instance, it is possible to print trees after a given phase using:

$ ./bin/dotc -Xprint:<phaseNameHere> sourceFile.scala
[+] private var relaxedTypingCache : Boolean
[+] private var relaxedTypingKnown : Boolean
[+] private def defines ( phase: MiniPhase , name: String ) : Boolean

Does phase contain a redefinition of method name? (which is a method of MiniPhase)

[+] def goAlternative ( tree: Alternative , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goApply ( tree: Apply , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goAssign ( tree: Assign , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goBind ( tree: Bind , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goBlock ( tree: Block , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goCaseDef ( tree: CaseDef , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goClosure ( tree: Closure , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goDefDef ( tree: DefDef , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goIdent ( tree: Ident , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goIf ( tree: If , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goInlined ( tree: Inlined , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goLabeled ( tree: Labeled , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goLiteral ( tree: Literal , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goMatch ( tree: Match , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goNew ( tree: New , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goOther ( tree: Tree , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goPackageDef ( tree: PackageDef , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goReturn ( tree: Return , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goSelect ( tree: Select , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goSeqLiteral ( tree: SeqLiteral , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goStats ( trees: List [ Tree ] , start: Int ) ( implicit ctx: Context ) : List [ Tree ]
[+] def goSuper ( tree: Super , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goTemplate ( tree: Template , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goThis ( tree: This , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goTry ( tree: Try , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goTypeApply ( tree: TypeApply , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goTypeDef ( tree: TypeDef , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goTypeTree ( tree: TypeTree , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goTyped ( tree: Typed , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goUnApply ( tree: UnApply , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goUnit ( tree: Tree , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goValDef ( tree: ValDef , start: Int ) ( implicit ctx: Context ) : Tree
[+] def goWhileDo ( tree: WhileDo , start: Int ) ( implicit ctx: Context ) : Tree
[+] private def init ( methName: String ) : Array [ MiniPhase ]
[+] private def newNxArray : Array [ MiniPhase ]
[+] def prepAlternative ( tree: Alternative , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepApply ( tree: Apply , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepAssign ( tree: Assign , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepBind ( tree: Bind , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepBlock ( tree: Block , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepCaseDef ( tree: CaseDef , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepClosure ( tree: Closure , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepDefDef ( tree: DefDef , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepIdent ( tree: Ident , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepIf ( tree: If , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepInlined ( tree: Inlined , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepLabeled ( tree: Labeled , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepLiteral ( tree: Literal , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepMatch ( tree: Match , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepNew ( tree: New , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepOther ( tree: Tree , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepPackageDef ( tree: PackageDef , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepReturn ( tree: Return , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepSelect ( tree: Select , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepSeqLiteral ( tree: SeqLiteral , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepStats ( trees: List [ Tree ] , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepSuper ( tree: Super , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepTemplate ( tree: Template , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepThis ( tree: This , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepTry ( tree: Try , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepTypeApply ( tree: TypeApply , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepTypeDef ( tree: TypeDef , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepTypeTree ( tree: TypeTree , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepTyped ( tree: Typed , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepUnApply ( tree: UnApply , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepUnit ( tree: Tree , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepValDef ( tree: ValDef , start: Int ) ( implicit ctx: Context ) : Context
[+] def prepWhileDo ( tree: WhileDo , start: Int ) ( implicit ctx: Context ) : Context
[+] override final def relaxedTyping : Boolean

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

[+] private def relaxedTypingCache_= ( x$1: Boolean ) : Unit
[+] private def relaxedTypingKnown_= ( x$1: Boolean ) : Unit
[+] override def run ( implicit ctx: Context ) : Unit
[+] def transformNode ( tree: Tree , start: Int ) ( implicit ctx: Context ) : Tree

Transform node using all phases in this group that have idxInGroup >= start

[+] def transformSpecificTree ( tree: T , start: Int ) ( implicit ctx: Context ) : T
[+] def transformSpecificTrees ( trees: List [ T ] , start: Int ) ( implicit ctx: Context ) : List [ T ]
[+] def transformStats ( trees: List [ Tree ] , exprOwner: Symbol , start: Int ) ( implicit ctx: Context ) : List [ Tree ]
[+] def transformTree ( tree: Tree , start: Int ) ( implicit ctx: Context ) : Tree

Transform full tree using all phases in this group that have idxInGroup >= start

[+] def transformTrees ( trees: List [ Tree ] , start: Int ) ( implicit ctx: Context ) : List [ Tree ]
[+] def transformUnit ( tree: Tree ) ( implicit ctx: Context ) : Tree