Quotes

trait Quotes

Quotation context provided by a macro expansion or in the scope of scala.quoted.staging.run. Used to perform all operations on quoted Expr or Type.

It contains the low-level Typed AST API metaprogramming API. This API does not have the static type guarantees that Expr and Type provide.

Source
Quotes.scala
class Object
trait Matchable
class Any

Type members

Classlikes

Low-level Typed AST metaprogramming API.

Low-level Typed AST metaprogramming API.

Provides all functionality related to AST-based metaprogramming.

Each type XYZ in the API is defined as an abstract type type XYZ. Methods on XYZ are provided by a given XYZMethods which implements extension methods on XYZ in the trait XYZMethods. The XYZ module is defined by a val XYZ: XYZModule which contains the methods defined in XYZModule. Type tests (TypeTest) are also given to perform subtype checks on these types.

Type hierarchy


+- Tree -+- PackageClause
         |
         +- Statement -+- Import
         |             +- Export
         |             +- Definition --+- ClassDef
         |             |               +- TypeDef
         |             |               +- DefDef
         |             |               +- ValDef
         |             |
         |             +- Term --------+- Ref -+- Ident
         |                             |       +- Select
         |                             |
         |                             +- Literal
         |                             +- This
         |                             +- New
         |                             +- NamedArg
         |                             +- Apply
         |                             +- TypeApply
         |                             +- Super
         |                             +- Typed
         |                             +- Assign
         |                             +- Block
         |                             +- Closure
         |                             +- If
         |                             +- Match
         |                             +- SummonFrom
         |                             +- Try
         |                             +- Return
         |                             +- Repeated
         |                             +- Inlined
         |                             +- SelectOuter
         |                             +- While
         |
         |
         +- TypeTree ----+- Inferred
         |               +- TypeIdent
         |               +- TypeSelect
         |               +- TypeProjection
         |               +- Singleton
         |               +- Refined
         |               +- Applied
         |               +- Annotated
         |               +- MatchTypeTree
         |               +- ByName
         |               +- LambdaTypeTree
         |               +- TypeBind
         |               +- TypeBlock
         |
         +- TypeBoundsTree
         +- WildcardTypeTree
         |
         +- CaseDef
         |
         +- TypeCaseDef
         +- Bind
         +- Unapply
         +- Alternatives

+- ParamClause -+- TypeParamClause
                +- TermParamClause

+- TypeRepr -+- NamedType -+- TermRef
             |             +- TypeRef
             +- ConstantType
             +- SuperType
             +- Refinement
             +- AppliedType
             +- AnnotatedType
             +- AndOrType -+- AndType
             |             +- OrType
             +- MatchType
             +- ByNameType
             +- ParamRef
             +- ThisType
             +- RecursiveThis
             +- RecursiveType
             +- LambdaType -+- MethodOrPoly -+- MethodType
             |              |                +- PolyType
             |              +- TypeLambda
             +- MatchCase
             +- TypeBounds
             +- NoPrefix

+- Selector -+- SimpleSelector
             +- RenameSelector
             +- OmitSelector
             +- GivenSelector

+- Signature

+- Position

+- SourceFile

+- Constant -+- BooleanConstant
             +- ByteConstant
             +- ShortConstant
             +- IntConstant
             +- LongConstant
             +- FloatConstant
             +- DoubleConstant
             +- CharConstant
             +- StringConstant
             +- UnitConstant
             +- NullConstant
             +- ClassOfConstant
+- Symbol

+- Flags

Source
Quotes.scala

Inherited classlikes

Types

type Nested = Quotes

Type of a Quotes provided by a splice within a quote that took this context.

Type of a Quotes provided by a splice within a quote that took this context.

Source
Quotes.scala

Value members

Inherited methods

def unpickleExpr[T](pickled: String | List[String], typeHole: (Int, Seq[Any]) => Type[_ <: AnyKind], termHole: (Int, Seq[Any], Quotes) => Expr[_]): Expr[T]

Unpickle repr which represents a pickled Expr tree, replacing splice nodes with holes

Unpickle repr which represents a pickled Expr tree, replacing splice nodes with holes

Inherited from
QuoteUnpickler
Source
QuoteUnpickler.scala
def unpickleType[T <: AnyKind](pickled: String | List[String], typeHole: (Int, Seq[Any]) => Type[_ <: AnyKind], termHole: (Int, Seq[Any], Quotes) => Expr[_]): Type[T]

Unpickle repr which represents a pickled Type tree, replacing splice nodes with holes

Unpickle repr which represents a pickled Type tree, replacing splice nodes with holes

Inherited from
QuoteUnpickler
Source
QuoteUnpickler.scala

Abstract fields

Low-level Typed AST metaprogramming API.

Low-level Typed AST metaprogramming API.

Provides all functionality related to AST-based metaprogramming.

Usage:

import scala.quoted._
def f(expr: Expr[Int])(using Quotes) =
  import quotes.reflect._
  val ast: Term = expr.asTerm
  ...

See reflectModule for full API.

Source
Quotes.scala

Extensions

Extensions

extension (self: Expr[Any])
def asExprOf(using Type[X]): Expr[X]

Convert this to an quoted.Expr[X] if this expression is a valid expression of type X or throws

Convert this to an quoted.Expr[X] if this expression is a valid expression of type X or throws

Source
Quotes.scala
def isExprOf(using Type[X]): Boolean

Checks is the quoted.Expr[?] is valid expression of type X

Checks is the quoted.Expr[?] is valid expression of type X

Source
Quotes.scala
extension (self: Expr[T])
def matches[T](that: Expr[Any]): Boolean

Pattern matches this against that. Effectively performing a deep equality check. It does the equivalent of

Pattern matches this against that. Effectively performing a deep equality check. It does the equivalent of

this match
  case '{...} => true // where the contents of the pattern are the contents of `that`
  case _ => false
Source
Quotes.scala
def show[T]: String

Show a source code like representation of this expression

Show a source code like representation of this expression

Source
Quotes.scala
def value[T](using FromExpr[T]): Option[T]

Return the value of this expression.

Return the value of this expression.

Returns None if the expression does not represent a value or possibly contains side effects. Otherwise returns the Some of the value.

Source
Quotes.scala
def valueOrError[T](using FromExpr[T]): T

Return the value of this expression.

Return the value of this expression.

Emits an error and throws if the expression does not represent a value or possibly contains side effects. Otherwise returns the value.

Source
Quotes.scala