dotty.tools.dotc.typer.Lifter
A class that handles argument lifting. Argument lifting is needed in the following
scenarios:
eta expansion
applications with default arguments
applications with out-of-order named arguments
Lifting generally lifts impure expressions only, except in the case of possible
default arguments, where we lift also complex pure expressions, since in that case
arguments can be duplicated as arguments to default argument methods.
Attributes Graph Reset zoom Hide graph Show graph
Supertypes Known subtypes Members list Concise view
Value members
Test indicating expr
does not need lifting
Test indicating expr
does not need lifting
Attributes
The corresponding lifter for pass-by-name arguments
The corresponding lifter for pass-by-name arguments
Attributes
Is lifting performed on erased terms?
Is lifting performed on erased terms?
Attributes
Lift out function prefix and all arguments from application
Lift out function prefix and all arguments from application
pre.f(arg1, ..., argN) becomes
val x0 = pre
val x1 = arg1
...
val xN = argN
x0.f(x1, ..., xN)
But leave pure expressions alone.
Attributes
Lift arguments that are not-idempotent into ValDefs in buffer defs
and replace by the idents of so created ValDefs.
Lift arguments that are not-idempotent into ValDefs in buffer defs
and replace by the idents of so created ValDefs.
Attributes
Lift out common part of lhs tree taking part in an operator assignment such as
Lift out common part of lhs tree taking part in an operator assignment such as
lhs += expr
Attributes
Lift prefix pre
of an application pre.f(...)
to
Lift prefix pre
of an application pre.f(...)
to
val x0 = pre
x0.f(...)
unless pre
is idempotent.
Attributes
The tree of a lifted definition
The tree of a lifted definition
Attributes
The flags of a lifted definition
The flags of a lifted definition
Attributes