Constructors
Members
The tailLabelN
label symbol, used to encode a continue
from the infinite while
loop.
The subset of paramSyms
that are modified in at least one recursive call, and which therefore need a replacement var
.
Symbols of Labeled blocks that are in tail position.
The local var
that replaces this
, if it is modified in at least one recursive call.
The replacement var
s for the params in rewrittenParamSyms
.
If not in tail position a tree traversal may not be needed.
A recursive call may still be in tail position if within the return
expression of a labeled block.
A tree traversal may also be needed to report a failure to transform
a recursive call of a @tailrec annotated method (i.e. isMandatory
).
The subset of paramSyms
that are modified in at least one recursive call, and which therefore need a replacement var
.
Rewrite this tree to contain no tail recursive calls
The local var
that replaces this
, if it is modified in at least one recursive call.
The replacement var
s for the params in rewrittenParamSyms
.