SymbolMethods
Members list
Extensions
Deprecated extensions
Returns all symbols overridden by this symbol.
Returns all symbols overridden by this symbol.
Attributes
Annotations attached to this symbol
Annotations attached to this symbol
Attributes
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
}
Attributes
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
Attributes
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
.
Attributes
The symbol of the companion class
The symbol of the companion class
Attributes
The symbol of the companion module
The symbol of the companion module
Attributes
All members directly declared in the class
All members directly declared in the class
Attributes
Field with the given name directly declared in the class
Field with the given name directly declared in the class
Attributes
Fields directly declared in the class
Fields directly declared in the class
Attributes
Get non-private named methods defined directly inside the class
Get non-private named methods defined directly inside the class
Attributes
Get all non-private methods defined directly inside the class, excluding constructors
Get all non-private methods defined directly inside the class, excluding constructors
Attributes
Get non-private named type defined directly inside the class
Get non-private named type defined directly inside the class
Attributes
Get all non-private types defined directly inside the class
Get all non-private types defined directly inside the class
Attributes
The documentation for this symbol, if any
The documentation for this symbol, if any
Attributes
Does this symbol represent a definition?
Does this symbol represent a definition?
Attributes
Get named non-private fields declared or inherited
Get named non-private fields declared or inherited
Attributes
Get all non-private fields declared or inherited
Get all non-private fields declared or inherited
Attributes
The full name of this symbol up to the root package
The full name of this symbol up to the root package
Attributes
Get the annotation defined with annotSym
attached to this symbol
Get the annotation defined with annotSym
attached to this symbol
Attributes
Is the annotation defined with annotSym
attached to this symbol?
Is the annotation defined with annotSym
attached to this symbol?
Attributes
Is this symbol an abstract type?
Is this symbol an abstract type?
Attributes
Is this symbol an alias type?
Is this symbol an alias type?
Attributes
Is this symbol an anonymous class?
Is this symbol an anonymous class?
Attributes
Is this symbol an anonymous function?
Is this symbol an anonymous function?
Attributes
Is this the definition of a Bind pattern?
Is this the definition of a Bind pattern?
Attributes
Is this the constructor of a class?
Is this the constructor of a class?
Attributes
Is this the definition of a ClassDef tree?
Is this the definition of a ClassDef tree?
Attributes
Is this the definition of a DefDef tree?
Is this the definition of a DefDef tree?
Attributes
Does this symbol come from a currently compiled source file?
Does this symbol come from a currently compiled source file?
Attributes
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.
Attributes
Does this symbol represent a no definition?
Does this symbol represent a no definition?
Attributes
Is this the definition of a PackageDef tree?
Is this the definition of a PackageDef tree?
Attributes
Is this symbol a class representing a refinement?
Is this symbol a class representing a refinement?
Attributes
Is this the definition of a TypeDef tree
Is this the definition of a TypeDef tree
Attributes
Is this the definition of a ValDef tree?
Is this the definition of a ValDef tree?
Attributes
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.
Attributes
Get named non-private fields declared or inherited
Get named non-private fields declared or inherited
Attributes
- Deprecated
- true
Get all non-private fields declared or inherited
Get all non-private fields declared or inherited
Attributes
- Deprecated
- true
Get named non-private methods declared or inherited
Get named non-private methods declared or inherited
Attributes
- Deprecated
- true
Get all non-private methods declared or inherited
Get all non-private methods declared or inherited
Attributes
- Deprecated
- true
Type member with the given name directly declared in the class
Type member with the given name directly declared in the class
Attributes
- Deprecated
- true
Type member directly declared in the class
Type member directly declared in the class
Attributes
- Deprecated
- true
Get named non-private methods declared or inherited
Get named non-private methods declared or inherited
Attributes
Get all non-private methods declared or inherited
Get all non-private methods declared or inherited
Attributes
The class symbol of the companion module class
The class symbol of the companion module class
Attributes
The symbol overriding this symbol in given subclass ofclazz
.
The symbol overriding this symbol in given subclass ofclazz
.
Attributes
- 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.
Attributes
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.
Attributes
The primary constructor of a class or trait, noSymbol
if not applicable.
The primary constructor of a class or trait, noSymbol
if not applicable.
Attributes
This symbol is private within the resulting type
This symbol is private within the resulting type
Attributes
This symbol is protected within the resulting type
This symbol is protected within the resulting type
Attributes
Term reference to the symbol usable in the scope of its owner.
Term reference to the symbol usable in the scope of its owner.
Attributes
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
Attributes
Type member with the given name directly declared in the class
Type member with the given name directly declared in the class
Attributes
Type member directly declared in the class
Type member directly declared in the class