SymbolMethods (original) (raw)
scala.quoted.Quotes.reflectModule.SymbolMethods
Extension methods of Symbol
Attributes
Source
Graph
Supertypes
Members list
Returns all symbols overridden by this symbol.
Returns all symbols overridden by this symbol.
Attributes
Source
Annotations attached to this symbol
Annotations attached to this symbol
Attributes
Source
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
Source
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
Source
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
Source
The symbol of the companion class
The symbol of the companion class
Attributes
Source
The symbol of the companion module
The symbol of the companion module
Attributes
Source
All members directly declared in the class
All members directly declared in the class
Attributes
Source
Field with the given name directly declared in the class
Field with the given name directly declared in the class
Attributes
Source
Fields directly declared in the class
Fields directly declared in the class
Attributes
Source
Get non-private named methods defined directly inside the class
Get non-private named methods defined directly inside the class
Attributes
Source
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
Source
Get non-private named type defined directly inside the class
Get non-private named type defined directly inside the class
Attributes
Source
Get all non-private types defined directly inside the class
Get all non-private types defined directly inside the class
Attributes
Source
The documentation for this symbol, if any
The documentation for this symbol, if any
Attributes
Source
Does this symbol represent a definition?
Does this symbol represent a definition?
Attributes
Source
Get named non-private fields declared or inherited
Get named non-private fields declared or inherited
Attributes
Source
Get all non-private fields declared or inherited
Get all non-private fields declared or inherited
Attributes
Source
The full name of this symbol up to the root package
The full name of this symbol up to the root package
Attributes
Source
Get the annotation defined with annotSym
attached to this symbol
Get the annotation defined with annotSym
attached to this symbol
Attributes
Source
Is the annotation defined with annotSym
attached to this symbol?
Is the annotation defined with annotSym
attached to this symbol?
Attributes
Source
Type of the definition
Type of the definition
Attributes
Experimental
true
Source
Is this symbol an abstract type or a type parameter?
Is this symbol an abstract type or a type parameter?
Attributes
Source
Is this symbol an alias type?
Is this symbol an alias type?
Attributes
Source
Is this symbol an anonymous class?
Is this symbol an anonymous class?
Attributes
Source
Is this symbol an anonymous function?
Is this symbol an anonymous function?
Attributes
Source
Is this the definition of a Bind pattern?
Is this the definition of a Bind pattern?
Attributes
Source
Is this the constructor of a class?
Is this the constructor of a class?
Attributes
Source
Is this the definition of a ClassDef tree?
Is this the definition of a ClassDef tree?
Attributes
Source
Is this the definition of a DefDef tree?
Is this the definition of a DefDef tree?
Attributes
Source
Does this symbol come from a currently compiled source file?
Does this symbol come from a currently compiled source file?
Attributes
Source
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
Source
Does this symbol represent a no definition?
Does this symbol represent a no definition?
Attributes
Source
Is this the definition of a PackageDef tree?
Is this the definition of a PackageDef tree?
Attributes
Source
Is this symbol a class representing a refinement?
Is this symbol a class representing a refinement?
Attributes
Source
Is this the super accessor?
Is this the definition of a term?
Is this the definition of a term?
Attributes
Source
Is this the definition of a type?
Is this the definition of a type?
Attributes
Source
Is this the definition of a TypeDef tree
Is this the definition of a TypeDef tree
Attributes
Source
Is this the symbol of a type parameter
Is this the symbol of a type parameter
Attributes
Source
Is this the definition of a ValDef tree?
Is this the definition of a ValDef tree?
Attributes
Source
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
Source
Get named non-private fields declared or inherited
Get named non-private fields declared or inherited
Attributes
Deprecated
[Since version 3.1.0]
Use fieldMember
Source
Get all non-private fields declared or inherited
Get all non-private fields declared or inherited
Attributes
Deprecated
[Since version 3.1.0]
Use fieldMembers
Source
Get named non-private methods declared or inherited
Get named non-private methods declared or inherited
Attributes
Deprecated
[Since version 3.1.0]
Use methodMember
Source
Get all non-private methods declared or inherited
Get all non-private methods declared or inherited
Attributes
Deprecated
[Since version 3.1.0]
Use methodMembers
Source
Type member with the given name directly declared in the class
Type member with the given name directly declared in the class
Attributes
Deprecated
[Since version 3.1.0]
Use declaredType or typeMember
Source
Type member directly declared in the class
Type member directly declared in the class
Attributes
Deprecated
[Since version 3.1.0]
Use declaredTypes or typeMembers
Source
Get named non-private methods declared or inherited
Get named non-private methods declared or inherited
Attributes
Source
Get all non-private methods declared or inherited
Get all non-private methods declared or inherited
Attributes
Source
The class symbol of the companion module class
The class symbol of the companion module class
Attributes
Source
The symbol overriding this symbol in given subclass ofclazz
.
The symbol overriding this symbol in given subclass ofclazz
.
Value parameters
ofclazz
is a subclass of this symbol's owner
Attributes
Source
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
Source
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
Source
Variance flags for of this type parameter.
Variance flags for of this type parameter.
Variance flags can be one of Flags.{Covariant, Contravariant, EmptyFlags}
. If this is not the symbol of a type parameter the result is Flags.EmptyFlags
.
Attributes
Source
The position of this symbol
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
Source
This symbol is private within the resulting type
This symbol is private within the resulting type
Attributes
Source
This symbol is protected within the resulting type
This symbol is protected within the resulting type
Attributes
Source
Signature of this definition
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
Source
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
Source
Type member with the given name declared or inherited in the class
Type member with the given name declared or inherited in the class
Attributes
Source
Type member directly declared or inherited in the class
Type member directly declared or inherited in the class
Attributes
Source
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.
Attributes
See also
Source
In this article