SymbolMethods
Extension methods of Symbol.
Attributes
- Graph
-
- Supertypes
Members list
Extensions
Experimental 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
Gets non-private named methods defined directly inside the class.
Gets non-private named methods defined directly inside the class.
Attributes
Gets all non-private methods defined directly inside the class, excluding constructors.
Gets all non-private methods defined directly inside the class, excluding constructors.
Attributes
Gets non-private named type defined directly inside the class.
Gets non-private named type defined directly inside the class.
Attributes
Gets all non-private types defined directly inside the class.
Gets 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
Gets named non-private fields declared or inherited.
Gets named non-private fields declared or inherited.
Attributes
Gets all non-private fields declared or inherited.
Gets all non-private fields declared or inherited.
Attributes
Flags of this symbol.
Flags of this symbol.
Attributes
The full name of this symbol up to the root package.
The full name of this symbol up to the root package.
Attributes
Gets the annotation defined with annotSym attached to this symbol.
Gets 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
Type of the definition.
Type of the definition.
Attributes
- Experimental
- true
Is this symbol an abstract type or a type parameter?
Is this symbol an abstract type or a type parameter?
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 super accessor?
Is this the super accessor?
Attributes
Is this the definition of a TypeDef tree.
Is this the definition of a TypeDef tree.
Attributes
Is this the symbol of a type parameter.
Is this the symbol of a type parameter.
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
Gets named non-private fields declared or inherited.
Gets named non-private fields declared or inherited.
Attributes
- Deprecated
-
[Since version 3.1.0]Use fieldMember
Gets all non-private fields declared or inherited.
Gets all non-private fields declared or inherited.
Attributes
- Deprecated
-
[Since version 3.1.0]Use fieldMembers
Gets named non-private methods declared or inherited.
Gets named non-private methods declared or inherited.
Attributes
- Deprecated
-
[Since version 3.1.0]Use methodMember
Gets all non-private methods declared or inherited.
Gets all non-private methods declared or inherited.
Attributes
- Deprecated
-
[Since version 3.1.0]Use methodMembers
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
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
Gets named non-private methods declared or inherited.
Gets named non-private methods declared or inherited.
Attributes
Gets all non-private methods declared or inherited.
Gets 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.
Value parameters
- ofclazz
-
is a subclass of this symbol's owner
Attributes
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
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
The position of this symbol.
The position of this symbol.
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
Signature of this definition.
Signature of this definition.
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 isTypeDef it will return a TypeDef, if this symbol isDefDef it will return a DefDef, if this symbol isBind it will return a Bind, if this symbol isValDef it will return a ValDef, or a DefDef (as the compiler can replace val class members with defs during compilation), 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 declared or inherited in the class.
Type member with the given name declared or inherited in the class.
Attributes
Type member directly declared or inherited in the class.
Type member directly declared or inherited in the class.
Attributes
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
-
TypeReprMethods.select