Quotes (original) (raw)
scala.quoted.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
Graph
Supertypes
Self type
Members list
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
Supertypes
Self type
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
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
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
Checks is the quoted.Expr[?]
is valid expression of type X
Checks is the quoted.Expr[?]
is valid expression of type X
Attributes
Source
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
Show a source code like representation of this expression
Show a source code like representation of this expression
Attributes
Source
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
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
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
[Since version 3.1.0]
Use valueOrAbort
Source
In this article