SymbolMethods
Extension methods of Symbol.
Attributes
- Source
- Quotes.scala
- Graph
-
- Supertypes
Members list
Extensions
Experimental extensions
Returns all symbols overridden by this symbol.
Annotations attached to 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
}
Attributes
- Source
- Quotes.scala
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
- Quotes.scala
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
- Quotes.scala
The symbol of the companion class.
The symbol of the companion module.
All members directly declared in the class.
Field with the given name directly declared in the class.
Fields directly declared in the class.
Gets non-private named methods defined directly inside the class.
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
- Source
- Quotes.scala
Gets non-private named type defined directly inside the class.
Gets all non-private types defined directly inside the class.
The documentation for this symbol, if any.
Does this symbol represent a definition?
Gets named non-private fields declared or inherited.
Gets all non-private fields declared or inherited.
Flags of this symbol.
The full name of this symbol up to the root package.
Gets the annotation defined with annotSym attached to this symbol.
Is the annotation defined with annotSym attached to this symbol?
Type of the definition.
Is this symbol an abstract type or a type parameter?
Is this symbol an alias type?
Is this symbol an anonymous class?
Is this symbol an anonymous function?
Is this the definition of a Bind pattern?
Is this the constructor of a class?
Is this the definition of a ClassDef tree?
Is this the definition of a DefDef tree?
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.
Attributes
- Source
- Quotes.scala
Does this symbol represent a no definition?
Is this the definition of a PackageDef tree?
Is this symbol a class representing a refinement?
Is this the super accessor?
Is this the definition of a term?
Is this the definition of a type?
Is this the definition of a TypeDef tree.
Is this the symbol of a type parameter.
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.
Attributes
- Source
- Quotes.scala
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 - Source
- Quotes.scala
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 - Source
- Quotes.scala
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 - Source
- Quotes.scala
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 - Source
- Quotes.scala
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
- Quotes.scala
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
- Quotes.scala
Gets named non-private methods declared or inherited.
Gets all non-private methods declared or inherited.
The class symbol of the companion module class.
The name of this symbol.
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
- Quotes.scala
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
- Quotes.scala
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
- Quotes.scala
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
- Quotes.scala
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
- Quotes.scala
This symbol is private within the resulting type.
This symbol is protected within the resulting type.
Signature of this definition.
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 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
- Source
- Quotes.scala
Type member with the given name declared or inherited in the class.
Type member directly declared or inherited 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.
Attributes
- See also
-
TypeReprMethods.select
- Source
- Quotes.scala