ValDef

oxygen.meta.Meta.Tree.Statement.Definition.ValDef
See theValDef companion class
object ValDef

Attributes

Companion
class
Graph
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type
ValDef.type

Members list

Type members

Inherited and Abstract types

type MirroredElemLabels <: Tuple

The names of the product elements

The names of the product elements

Attributes

Inherited from:
Mirror
type MirroredLabel <: String

The name of the type

The name of the type

Attributes

Inherited from:
Mirror

Value members

Concrete methods

def apply(symbol: Symbol, rhs: Option[Term]): ValDef

Create a value definition val x, var x or lazy val x with the signature defined in the symbol.

Create a value definition val x, var x or lazy val x with the signature defined in the symbol.

The rhs should return be Some containing the implementation of the method. Returns None the method has no implementation. Any definition directly inside the implementation should have symbol as owner.

Use Symbol.asQuotes to create the rhs using quoted code.

See also: Tree.changeOwner

Attributes

def copy(original: Tree)(name: String, tpt: TypeTree, rhs: Option[Term]): ValDef
def let(owner: Symbol, name: String, rhs: Term)(body: Ref => Term): Term

Creates a block { val <name> = <rhs: Term>; <body(x): Term> }

Creates a block { val <name> = <rhs: Term>; <body(x): Term> }

Usage:

ValDef.let(owner, "x", rhs1) { x =>
  ValDef.let(x.symbol.owner, "y", rhs2) { y =>
    // use `x` and `y`
  }
}

Attributes

def let(owner: Symbol, rhs: Term)(body: Ref => Term): Term

Creates a block { val x = <rhs: Term>; <body(x): Term> }

Creates a block { val x = <rhs: Term>; <body(x): Term> }

Usage:

ValDef.let(owner, rhs1) { x =>
  ValDef.let(owner, rhs2) { y =>
    // use `x` and `y`
  }
}

Attributes

def let(owner: Symbol, terms: List[Term])(body: List[Ref] => Term): Term

Creates a block { val x1 = <terms(0): Term>; ...; val xn = <terms(n-1): Term>; <body(List(x1, ..., xn)): Term> }

Creates a block { val x1 = <terms(0): Term>; ...; val xn = <terms(n-1): Term>; <body(List(x1, ..., xn)): Term> }

Usage:

ValDef.let(owner, rhsList) { xs =>
   ...
}

Attributes