final object EtaExpansion

Constructors

Members

def etaExpand ( tree: Tree , mt: MethodType , xarity: Int ) ( implicit ctx: Context ) : Tree

Eta-expanding a tree means converting a method reference to a function value.

Eta-expanding a tree means converting a method reference to a function value.

private def lift ( defs: ListBuffer [ Tree ] , expr: Tree , prefix: TermName ) ( implicit ctx: Context ) : Tree
def lift$default$3 : TermName
[+] def liftApp ( defs: ListBuffer [ Tree ] , tree: Tree ) ( implicit ctx: Context ) : Tree

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)

B...

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 idempotent expressions alone.

def liftArg ( defs: ListBuffer [ Tree ] , arg: Tree , prefix: TermName ) ( implicit ctx: Context ) : Tree

Lift a function argument, stripping any NamedArg wrapper

Lift a function argument, stripping any NamedArg wrapper

def liftArg$default$3 : TermName

Lift a function argument, stripping any NamedArg wrapper

Lift a function argument, stripping any NamedArg wrapper

def liftArgs ( defs: ListBuffer [ Tree ] , methRef: Type , args: List [ Tree ] ) ( implicit ctx: Context ) : List [ Tree [ T ] ]

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.

def liftAssigned ( defs: ListBuffer [ Tree ] , tree: Tree ) ( implicit ctx: Context ) : Tree

Lift out common part of lhs tree taking part in an operator assignment such as

lhs += expr

Lift out common part of lhs tree taking part in an operator assignment such as

lhs += expr

def liftPrefix ( defs: ListBuffer [ Tree ] , tree: Tree ) ( implicit ctx: Context ) : Tree

Lift prefix pre of an application pre.f(...) to

val x0 = pre x0.f(...)

unless pre is a New or pre is idempotent.

Lift prefix pre of an application pre.f(...) to

val x0 = pre x0.f(...)

unless pre is a New or pre is idempotent.