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:
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
- 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
+- Tree -+- PackageClause
|
+- Statement -+- Import
| +- Export
| +- Definition --+- ClassDef
| | +- TypeDef
| | +- ValOrDefDef -+- 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
+- FlexibleType
+- MethodTypeKind -+- Contextual
+- Implicit
+- Plain
+- 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
- Self type
-
reflect.type
Types
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:
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
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
Checks is the quoted.Expr[?]
is valid expression of type X
Deprecated extensions
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
Attributes
- Source
- Quotes.scala
Show a source code like representation of this expression
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
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
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