Quotes

scala.quoted.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. Quotes are generated from an enclosing ${ ... } or scala.staging.run. For example: scala sc:nocompile import scala.quoted._ inline def myMacro: Expr[T] = ${ /* (quotes: Quotes) ?=> */ myExpr } def myExpr(using Quotes): Expr[T] = '{ f(${ /* (quotes: Quotes) ?=> */ myOtherExpr }) } } def myOtherExpr(using Quotes): Expr[U] = '{ ... }

Attributes

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

Members list

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 none

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

+- 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

Attributes

Source
Quotes.scala
Supertypes
class Object
trait Matchable
class Any
Self type
reflect.type

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.

Attributes

Source
Quotes.scala

Value members

Abstract fields

Low-level Typed AST metaprogramming API.

Low-level Typed AST metaprogramming API.

Provides all functionality related to AST-based metaprogramming.

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

See reflectModule for full API.

Attributes

Source
Quotes.scala

Extensions

Extensions

extension (self: Expr[Any])
def asExprOf[X](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

Attributes

Source
Quotes.scala
def isExprOf[X](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

Attributes

Source
Quotes.scala

Deprecated extensions

extension [T](self: Expr[T])
def matches(that: Expr[Any]): Boolean

Pattern matches this against that.

Pattern matches this against that. Effectively performing a deep equality check. It does the equivalent of scala sc:nocompile this match case '{...} => true // where the contents of the pattern are the contents of that case _ => false

Attributes

Source
Quotes.scala
def show: String

Show a source code like representation of this expression

Show a source code like representation of this expression

Attributes

Source
Quotes.scala
def value(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.

Attributes

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

Return the value of this expression.

Return the value of this expression.

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

Attributes

Source
Quotes.scala
def valueOrError(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.

Attributes

Deprecated
true
Source
Quotes.scala