ClassDefModule

scala.quoted.Quotes.reflectModule.ClassDefModule

Methods of the module object val ClassDef

Attributes

Source
Quotes.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
ClassDef.type

Members list

Value members

Abstract methods

def copy(original: Tree)(name: String, constr: DefDef, parents: List[Tree], selfOpt: Option[ValDef], body: List[Statement]): ClassDef

Attributes

Source
Quotes.scala

Attributes

Source
Quotes.scala

Experimental methods

def apply(cls: Symbol, parents: List[Tree], body: List[Statement]): ClassDef

Create a class definition tree

Create a class definition tree

Value parameters

body

List of members of the class. The members must align with the members of cls.

cls

The class symbol. A new class symbol can be created using Symbol.newClass.

parents

The parents trees class. The trees must align with the parent types of cls. Parents can be TypeTrees if they don't have term parameter, otherwise the can be Term containing the New applied to the parameters of the extended class.

Attributes

Experimental
true
Source
Quotes.scala
def module(module: Symbol, parents: List[Tree], body: List[Statement]): (ValDef, ClassDef)

Create the ValDef and ClassDef of a module (equivalent to an object declaration in source code).

Create the ValDef and ClassDef of a module (equivalent to an object declaration in source code).

Equivalent to

def module(module: Symbol, parents: List[Tree], body: List[Statement]): (ValDef, ClassDef) =
  val modCls = module.moduleClass
  val modClassDef = ClassDef(modCls, parents, body)
  val modValDef = ValDef(module, Some(Apply(Select(New(TypeIdent(modCls)), cls.primaryConstructor), Nil)))
  List(modValDef, modClassDef)

Value parameters

body

body of the module class

module

the module symbol (created using Symbol.newModule)

parents

parents of the module class

Attributes

Returns

The module lazy val definition and module class definition. These should be added one after the other (in that order) in the body of a class or statements of a block.

Experimental
true
Source
Quotes.scala