SymbolMethods

scala.quoted.Quotes.reflectModule.SymbolMethods

Extension methods of Symbol.

Attributes

Source
Quotes.scala
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Extensions

Experimental extensions

extension (self: Quotes.this.reflectModule.this.Symbol)

Returns all symbols overridden by this symbol.

Returns all symbols overridden by this symbol.

Attributes

Source
Quotes.scala

Annotations attached to this symbol.

Annotations attached to this symbol.

Attributes

Source
Quotes.scala
def asQuotes: Quotes.this.Nested

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 class.

Attributes

Source
Quotes.scala

The symbol of the companion module.

The symbol of the companion module.

Attributes

Source
Quotes.scala

All members directly declared in the class.

All members directly declared in the class.

Attributes

Source
Quotes.scala

Field with the given name directly declared in the class.

Field with the given name directly declared in the class.

Attributes

Source
Quotes.scala

Fields directly declared in the class.

Fields directly declared in the class.

Attributes

Source
Quotes.scala

Gets non-private named methods defined directly inside the class.

Gets non-private named methods defined directly inside the class.

Attributes

Source
Quotes.scala

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 non-private named type defined directly inside the class.

Attributes

Source
Quotes.scala

Gets all non-private types defined directly inside the class.

Gets all non-private types defined directly inside the class.

Attributes

Source
Quotes.scala

The documentation for this symbol, if any.

The documentation for this symbol, if any.

Attributes

Source
Quotes.scala

Does this symbol represent a definition?

Does this symbol represent a definition?

Attributes

Source
Quotes.scala
def fieldMember(name: String): Quotes.this.reflectModule.this.Symbol

Gets named non-private fields declared or inherited.

Gets named non-private fields declared or inherited.

Attributes

Source
Quotes.scala

Gets all non-private fields declared or inherited.

Gets all non-private fields declared or inherited.

Attributes

Source
Quotes.scala
def flags: Quotes.this.reflectModule.this.Flags

Flags of this symbol.

Flags of this symbol.

Attributes

Source
Quotes.scala

The full name of this symbol up to the root package.

The full name of this symbol up to the root package.

Attributes

Source
Quotes.scala
def getAnnotation(annotSym: Quotes.this.reflectModule.this.Symbol): Option[Quotes.this.reflectModule.this.Term]

Gets the annotation defined with annotSym attached to this symbol.

Gets the annotation defined with annotSym attached to this symbol.

Attributes

Source
Quotes.scala
def hasAnnotation(annotSym: Quotes.this.reflectModule.this.Symbol): Boolean

Is the annotation defined with annotSym attached to this symbol?

Is the annotation defined with annotSym attached to this symbol?

Attributes

Source
Quotes.scala

Type of the definition.

Type of the definition.

Attributes

Experimental
true
Source
Quotes.scala

Is this symbol an abstract type or a type parameter?

Is this symbol an abstract type or a type parameter?

Attributes

Source
Quotes.scala

Is this symbol an alias type?

Is this symbol an alias type?

Attributes

Source
Quotes.scala

Is this symbol an anonymous class?

Is this symbol an anonymous class?

Attributes

Source
Quotes.scala

Is this symbol an anonymous function?

Is this symbol an anonymous function?

Attributes

Source
Quotes.scala

Is this the definition of a Bind pattern?

Is this the definition of a Bind pattern?

Attributes

Source
Quotes.scala

Is this the constructor of a class?

Is this the constructor of a class?

Attributes

Source
Quotes.scala

Is this the definition of a ClassDef tree?

Is this the definition of a ClassDef tree?

Attributes

Source
Quotes.scala

Is this the definition of a DefDef tree?

Is this the definition of a DefDef tree?

Attributes

Source
Quotes.scala

Does this symbol come from a currently compiled source file?

Does this symbol come from a currently compiled source file?

Attributes

Source
Quotes.scala

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?

Does this symbol represent a no definition?

Attributes

Source
Quotes.scala

Is this the definition of a PackageDef tree?

Is this the definition of a PackageDef tree?

Attributes

Source
Quotes.scala

Is this symbol a class representing a refinement?

Is this symbol a class representing a refinement?

Attributes

Source
Quotes.scala

Is this the super accessor?

Is this the super accessor?

Attributes

Source
Quotes.scala

Is this the definition of a term?

Is this the definition of a term?

Attributes

Source
Quotes.scala

Is this the definition of a type?

Is this the definition of a type?

Attributes

Source
Quotes.scala

Is this the definition of a TypeDef tree.

Is this the definition of a TypeDef tree.

Attributes

Source
Quotes.scala

Is this the symbol of a type parameter.

Is this the symbol of a type parameter.

Attributes

Source
Quotes.scala

Is this the definition of a ValDef tree?

Is this the definition of a ValDef tree?

Attributes

Source
Quotes.scala

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
def memberField(name: String): Quotes.this.reflectModule.this.Symbol

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
def memberType(name: String): Quotes.this.reflectModule.this.Symbol

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 named non-private methods declared or inherited.

Attributes

Source
Quotes.scala

Gets all non-private methods declared or inherited.

Gets all non-private methods declared or inherited.

Attributes

Source
Quotes.scala

The class symbol of the companion module class.

The class symbol of the companion module class.

Attributes

Source
Quotes.scala
def name: String

The name of this symbol.

The name of this symbol.

Attributes

Source
Quotes.scala

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
def owner: Quotes.this.reflectModule.this.Symbol

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 position of this symbol.

Attributes

Source
Quotes.scala

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 private within the resulting type.

Attributes

Source
Quotes.scala

This symbol is protected within the resulting type.

This symbol is protected within the resulting type.

Attributes

Source
Quotes.scala

Signature of this definition.

Signature of this definition.

Attributes

Source
Quotes.scala

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
Quotes.scala
def tree: Quotes.this.reflectModule.this.Tree

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
def typeMember(name: String): Quotes.this.reflectModule.this.Symbol

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
Quotes.scala

Type member directly declared or inherited in the class.

Type member directly declared or inherited in the class.

Attributes

Source
Quotes.scala

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