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
trait Matchable
class Any
Known subtypes
Members list
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