The primary constructor of a class or trait, noSymbol
if not applicable.
The primary constructor of a class or trait, noSymbol
if not applicable.
- Source:
- Quotes.scala
Extension methods of Symbol
Returns all symbols overridden by this symbol.
Returns all symbols overridden by this symbol.
Returns a nested quote with this symbol as splice owner (Symbol.spliceOwner
).
Returns a nested quote with this symbol as splice owner (Symbol.spliceOwner
).
Changes the owner under which the definition in a quote are created.
Usages:
def rhsExpr(using q: Quotes): Expr[Unit] =
import q.reflect._
'{ val y = ???; (y, y) }
def aValDef(using q: Quotes)(owner: q.reflect.Symbol) =
import q.reflect._
val sym = Symbol.newVal(owner, "x", TypeRepr.of[Unit], Flags.EmptyFlags, Symbol.noSymbol)
val rhs = rhsExpr(using sym.asQuotes).asTerm
ValDef(sym, Some(rhs))
def inQuotes(using q: Quotes) = {
import q.reflect._
new TreeMap:
override def transformTerm(tree: Term)(owner: Symbol): Term =
tree match
case tree: Ident =>
given Quotes = owner.asQuotes
// Definitions contained in the quote will be owned by `owner`.
// No need to use `changeOwner` in this case.
'{ val x = ???; x }.asTerm
}
Fields of a case class type -- only the ones declared in primary constructor
Fields of a case class type -- only the ones declared in primary constructor
Case class or case object children of a sealed trait or cases of an enum
.
Case class or case object children of a sealed trait or cases of an enum
.
All members directly declared in the class
All members directly declared in the class
Field with the given name directly declared in the class
Field with the given name directly declared in the class
Get non-private named methods defined directly inside the class
Get non-private named methods defined directly inside the class
Get all non-private methods defined directly inside the class, excluding constructors
Get all non-private methods defined directly inside the class, excluding constructors
Get non-private named type defined directly inside the class
Get non-private named type defined directly inside the class
Get all non-private types defined directly inside the class
Get all non-private types defined directly inside the class
The documentation for this symbol, if any
The documentation for this symbol, if any
Does this symbol represent a definition?
Does this symbol represent a definition?
Get named non-private fields declared or inherited
Get named non-private fields declared or inherited
Get all non-private fields declared or inherited
Get all non-private fields declared or inherited
The full name of this symbol up to the root package
The full name of this symbol up to the root package
Get the annotation defined with annotSym
attached to this symbol
Get the annotation defined with annotSym
attached to this symbol
Is the annotation defined with annotSym
attached to this symbol?
Is the annotation defined with annotSym
attached to this symbol?
Is this the definition of a Bind pattern?
Is this the definition of a Bind pattern?
Is this the definition of a ClassDef tree?
Is this the definition of a ClassDef tree?
Is this the definition of a DefDef tree?
Is this the definition of a DefDef tree?
Does this symbol come from a currently compiled source file?
Does this symbol come from a currently compiled source file?
Dummy val symbol that owns all statements within the initialization of the class.
This may also contain local definitions such as classes defined in a locally
block in the class.
Dummy val symbol that owns all statements within the initialization of the class.
This may also contain local definitions such as classes defined in a locally
block in the class.
Does this symbol represent a no definition?
Does this symbol represent a no definition?
Is this the definition of a PackageDef tree?
Is this the definition of a PackageDef tree?
Is this symbol a class representing a refinement?
Is this symbol a class representing a refinement?
Is this the definition of a TypeDef tree
Is this the definition of a TypeDef tree
Is this the definition of a ValDef tree?
Is this the definition of a ValDef tree?
Owner of this symbol. The owner is the symbol in which this symbol is defined. Returns NoSymbol
if this symbol does not have an owner.
Owner of this symbol. The owner is the symbol in which this symbol is defined. Returns NoSymbol
if this symbol does not have an owner.
Get named non-private fields declared or inherited
Get named non-private fields declared or inherited
Get all non-private fields declared or inherited
Get all non-private fields declared or inherited
Get named non-private methods declared or inherited
Get named non-private methods declared or inherited
Get all non-private methods declared or inherited
Get all non-private methods declared or inherited
Type member with the given name directly declared in the class
Type member with the given name directly declared in the class
Type member directly declared in the class
Type member directly declared in the class
Get named non-private methods declared or inherited
Get named non-private methods declared or inherited
Get all non-private methods declared or inherited
Get all non-private methods declared or inherited
The class symbol of the companion module class
The class symbol of the companion module class
The symbol overriding this symbol in given subclass ofclazz
.
The symbol overriding this symbol in given subclass ofclazz
.
is a subclass of this symbol's owner
Owner of this symbol. The owner is the symbol in which this symbol is defined. Throws if this symbol does not have an owner.
Owner of this symbol. The owner is the symbol in which this symbol is defined. Throws if this symbol does not have an owner.
The symbols of each type parameter list and value parameter list of this method, or Nil if this isn't a method.
The symbols of each type parameter list and value parameter list of this method, or Nil if this isn't a method.
The primary constructor of a class or trait, noSymbol
if not applicable.
The primary constructor of a class or trait, noSymbol
if not applicable.
This symbol is private within the resulting type
This symbol is private within the resulting type
This symbol is protected within the resulting type
This symbol is protected within the resulting type
Term reference to the symbol usable in the scope of its owner.
Term reference to the symbol usable in the scope of its owner.
Tree of this definition
Tree of this definition
If this symbol isClassDef
it will return a
ClassDef, if this symbol
isTypeDefit will return
a TypeDef
,
if this symbol isValDef
it will return a
ValDef, if this symbol
isDefDefit will return
a DefDef
if this symbol isBind
it will return a
Bind`,
else will throw
Warning: avoid using this method in macros.
Caveat: The tree is not guaranteed to exist unless the compiler
option -Yretain-trees
is enabled.
Anti-pattern: The following code is an anti-pattern:
symbol.tree.tpe
It should be replaced by one of the following:
tp.memberType(symbol)
symbol.typeRef
symbol.termRef
Type member with the given name directly declared in the class
Type member with the given name directly declared in the class
Type member directly declared in the class
Type member directly declared in the class
Type reference to the symbol usable in the scope of its owner.
Type reference to the symbol usable in the scope of its owner.
To get a reference to a symbol from a specific prefix tp
, use tp.select(symbol)
instead.
TypeReprMethods.select