reflectModule
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 -+- 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
- Graph
-
- Supertypes
- Self type
-
reflect.type
Members list
Type members
Classlikes
Extension methods of Alternatives
Methods of the module object val Alternatives
Methods of the module object val Alternatives
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Alternatives.type
Extension methods of AndOrType
Methods of the module object val AndType
Methods of the module object val AndType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
AndType.type
Extension methods of Annotated
Methods of the module object val Annotated
Methods of the module object val Annotated
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Annotated.type
Extension methods of AnnotatedType
Methods of the module object val AnnotatedType
Methods of the module object val AnnotatedType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
AnnotatedType.type
Extension methods of Applied
Methods of the module object val Applied
Methods of the module object val Applied
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Applied.type
Extension methods of AppliedType
Methods of the module object val AppliedType
Methods of the module object val AppliedType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
AppliedType.type
Extension methods of Apply
Methods of the module object val Apply
Methods of the module object val Apply
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Apply.type
Extension methods of Assign
Methods of the module object val Assign
Methods of the module object val Assign
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Assign.type
Extension methods of Bind
Methods of the module object val Bind
Extension methods of Block
Methods of the module object val Block
Methods of the module object val Block
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Block.type
Methods of the module object val BooleanConstant
Methods of the module object val BooleanConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
BooleanConstant.type
Extension methods of ByName
Methods of the module object val ByName
Methods of the module object val ByName
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ByName.type
Extension methods of ByNameType
Methods of the module object val ByNameType
Methods of the module object val ByNameType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ByNameType.type
Methods of the module object val ByteConstant
Methods of the module object val ByteConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ByteConstant.type
Extension methods of CaseDef
Methods of the module object val CaseDef
Methods of the module object val CaseDef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
CaseDef.type
Methods of the module object val CharConstant
Methods of the module object val CharConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
CharConstant.type
Extension methods of ClassDef
Methods of the module object val ClassDef
Methods of the module object val ClassDef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ClassDef.type
Methods of the module object val ClassOf
Methods of the module object val ClassOf
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ClassOfConstant.type
Extension methods of Closure
Methods of the module object val Closure
Methods of the module object val Closure
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Closure.type
Methods of the module object val CompilationInfo
Methods of the module object val CompilationInfo
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
CompilationInfo.type
Extension methods of Constant
Constant value represented as the constant itself
Constant value represented as the constant itself
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Constant.type
Extension methods of ConstantType
Methods of the module object val Type
Methods of the module object val Type
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ConstantType.type
Extension methods of DefDef
Methods of the module object val DefDef
Methods of the module object val DefDef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
DefDef.type
Extension methods of Definition
Methods of the module object val Definition
Methods of the module object val Definition
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Definition.type
Methods of the module object val DoubleConstant
Methods of the module object val DoubleConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
DoubleConstant.type
Extension methods of Export
Methods of the module object val Export
Methods of the module object val Export
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Export.type
Extension methods of Flags
Methods of the module object val Flags
Methods of the module object val Flags
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Flags.type
Methods of the module object val FloatConstant
Methods of the module object val FloatConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
FloatConstant.type
Extension methods of GivenSelector
Methods of the module object val GivenSelector
Methods of the module object val GivenSelector
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
GivenSelector.type
Extension methods of Ident
Methods of the module object val Ident
Methods of the module object val Ident
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Ident.type
Extension methods of If
Methods of the module object val If
Extension methods of ImplicitSearchFailure
Extension methods of ImplicitSearchSuccess
Methods of the module object val Implicits
Methods of the module object val Implicits
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Implicits.type
Extension methods of Import
Methods of the module object val Import
Methods of the module object val Import
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Import.type
Methods of the module object val Inferred
Methods of the module object val Inferred
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Inferred.type
Extension methods of Inlined
Methods of the module object val Inlined
Methods of the module object val Inlined
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Inlined.type
Methods of the module object val IntConstant
Methods of the module object val IntConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
IntConstant.type
Methods of the module object val Lambda
Methods of the module object val Lambda
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Lambda.type
Extension methods of LambdaType
Extension methods of LambdaTypeTree
Methods of the module object val LambdaTypeTree
Methods of the module object val LambdaTypeTree
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
LambdaTypeTree.type
Extension methods of Literal
Methods of the module object val Literal
Methods of the module object val Literal
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Literal.type
Methods of the module object val LongConstant
Methods of the module object val LongConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
LongConstant.type
Extension methods of MatchCase
Methods of the module object val MatchCase
Methods of the module object val MatchCase
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
MatchCase.type
Extension methods of Match
Methods of the module object val Match
Methods of the module object val Match
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Match.type
Extension methods of MatchType
Methods of the module object val MatchType
Methods of the module object val MatchType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
MatchType.type
Extension methods of MatchTypeTree
Methods of the module object val MatchTypeTree
Methods of the module object val MatchTypeTree
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
MatchTypeTree.type
Extension methods of MethodType
Methods of the module object val MethodType
Methods of the module object val MethodType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
MethodType.type
Extension methods of NamedArg
Methods of the module object val NamedArg
Methods of the module object val NamedArg
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
NamedArg.type
Extension methods of NamedType
Extension methods of New
Methods of the module object val New
Methods of the module object val NoPrefix
Methods of the module object val NoPrefix
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
NoPrefix.type
Methods of the module object val NullConstant
Methods of the module object val NullConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
NullConstant.type
Extension methods of OmitSelector
Methods of the module object val OmitSelector
Methods of the module object val OmitSelector
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
OmitSelector.type
Methods of the module object val OrType
Methods of the module object val OrType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
OrType.type
Extension methods of PackageClause
Methods of the module object val PackageClause
Methods of the module object val PackageClause
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
PackageClause.type
Extension methods of ParamClause
Methods of the module object val ParamClause
Methods of the module object val ParamClause
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ParamClause.type
Extension methods of ParamRef
Methods of the module object val ParamRef
Methods of the module object val ParamRef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ParamRef.type
Extension methods of PolyType
Methods of the module object val PolyType
Methods of the module object val PolyType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
PolyType.type
Extension methods of Position
Methods of the module object val Position
Methods of the module object val Position
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Position.type
Type class used in show
methods to provide customizable String
representations
Type class used in show
methods to provide customizable String
representations
Attributes
- Source
- Quotes.scala
- Supertypes
Methods of the module object val Printer
Methods of the module object val Printer
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Printer.type
Extension methods of RecursiveThis
Methods of the module object val RecursiveThis
Methods of the module object val RecursiveThis
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
RecursiveThis.type
Extension methods of RecursiveType
Methods of the module object val RecursiveType
Methods of the module object val RecursiveType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
RecursiveType.type
Methods of the module object val Ref
Extension methods of Refined
Methods of the module object val Refined
Methods of the module object val Refined
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Refined.type
Extension methods of Refinement
Methods of the module object val Refinement
Methods of the module object val Refinement
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Refinement.type
Extension methods of RenameSelector
Methods of the module object val RenameSelector
Methods of the module object val RenameSelector
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
RenameSelector.type
Extension methods of Repeated
Methods of the module object val Repeated
Methods of the module object val Repeated
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Repeated.type
Extension methods of Return
Methods of the module object val Return
Methods of the module object val Return
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Return.type
Extension methods of Select
Methods of the module object val Select
Methods of the module object val Select
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Select.type
Extension methods of SelectOuter
Methods of the module object val SelectOuter
Methods of the module object val SelectOuter
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
SelectOuter.type
Methods of the module object val Selector
Methods of the module object val Selector
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Selector.type
Methods of the module object val Short
Methods of the module object val Short
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ShortConstant.type
Extension methods of Signature
Methods of the module object val Signature
Methods of the module object val Signature
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Signature.type
Extension methods of SimpleSelector
Methods of the module object val SimpleSelector
Methods of the module object val SimpleSelector
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
SimpleSelector.type
Extension methods of Singleton
Methods of the module object val Singleton
Methods of the module object val Singleton
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Singleton.type
Extension methods of SourceFile
Methods of the module object val SourceFile
Methods of the module object val SourceFile
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
SourceFile.type
Methods of the module object val StringConstant
Methods of the module object val StringConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
StringConstant.type
Extension methods of SummonFrom
Methods of the module object val SummonFrom
Methods of the module object val SummonFrom
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
SummonFrom.type
Extension methods of Super
Methods of the module object val Super
Methods of the module object val Super
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Super.type
Extension methods of SuperType
Methods of the module object val SuperType
Methods of the module object val SuperType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
SuperType.type
Extension methods of Symbol
Methods of the module object val Symbol
Methods of the module object val Symbol
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Symbol.type
Extension methods of Term
Methods of the module object val Term
Extension methods of TermParamClause
Methods of the module object val TermParamClause
Methods of the module object val TermParamClause
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TermParamClause.type
Methods of the module object val TermRef
Methods of the module object val TermRef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TermRef.type
Extension methods of This
Methods of the module object val This
Extension methods of ThisType
Methods of the module object val ThisType
Methods of the module object val ThisType
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ThisType.type
Customizable Tree accumulator.
Customizable Tree accumulator.
Usage:
def inQuotes(using q: Quotes) = {
import q.reflect.*
class MyTreeAccumulator[X] extends TreeAccumulator[X] {
def foldTree(x: X, tree: Tree)(owner: Symbol): X = ???
}
}
Attributes
- Source
- Quotes.scala
- Supertypes
- Known subtypes
-
trait TreeTraverser
Customizable tree mapper.
Customizable tree mapper.
Usage:
def inQuotes(using q: Quotes) = {
import q.reflect.*
class MyTreeMap extends TreeMap {
override def transformTree(tree: Tree)(owner: Symbol): Tree = ???
}
}
Use Symbol.asQuotes
to create quotes with the correct owner within the TreeMap.
Attributes
- Source
- Quotes.scala
- Supertypes
Extension methods of Tree
Methods of the module object val Tree
Customizable tree traverser.
Customizable tree traverser.
Usage:
def inQuotes(using q: Quotes) = {
import q.reflect.*
class MyTraverser extends TreeTraverser {
override def traverseTree(tree: Tree)(owner: Symbol): Unit = ???
}
}
Attributes
- Source
- Quotes.scala
- Supertypes
Extension methods of Try
Methods of the module object val Try
Extension methods of TypeApply
Methods of the module object val TypeApply
Methods of the module object val TypeApply
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeApply.type
Extension methods of TypeBind
Methods of the module object val TypeBind
Methods of the module object val TypeBind
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeBind.type
Extension methods of TypeBlock
Methods of the module object val TypeBlock
Methods of the module object val TypeBlock
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeBlock.type
Extension methods of TypeBounds
Methods of the module object val TypeBounds
Methods of the module object val TypeBounds
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeBounds.type
Extension methods of TypeBoundsTree
Methods of the module object val TypeBoundsTree
Methods of the module object val TypeBoundsTree
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeBoundsTree.type
Extension methods of TypeCaseDef
Methods of the module object val TypeCaseDef
Methods of the module object val TypeCaseDef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeCaseDef.type
Extension methods of TypeDef
Methods of the module object val TypeDef
Methods of the module object val TypeDef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeDef.type
Extension methods of TypeIdent
Methods of the module object val TypeIdent
Methods of the module object val TypeIdent
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeIdent.type
Extension methods of TypeLambda
Methods of the module object val TypeLambda
Methods of the module object val TypeLambda
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeLambda.type
Extension methods of TypeParamClause
Methods of the module object val TypeParamClause
Methods of the module object val TypeParamClause
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeParamClause.type
Extension methods of TypeProjection
Methods of the module object val TypeProjection
Methods of the module object val TypeProjection
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeProjection.type
Extension methods of TypeRef
Methods of the module object val TypeRef
Methods of the module object val TypeRef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeRef.type
Extension methods of TypeRepr
Methods of the module object val TypeRepr
Methods of the module object val TypeRepr
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeRepr.type
Extension methods of TypeSelect
Methods of the module object val TypeSelect
Methods of the module object val TypeSelect
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeSelect.type
Extension methods of TypeTree
Methods of the module object val TypeTree
Methods of the module object val TypeTree
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypeTree.type
Extension methods of Typed
Methods of the module object val Typed
Methods of the module object val Typed
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Typed.type
Extension methods of TypedOrTest
Methods of the module object val TypedOrTest
Methods of the module object val TypedOrTest
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
TypedOrTest.type
Extension methods of Unapply
Methods of the module object val Unapply
Methods of the module object val Unapply
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Unapply.type
Methods of the module object val UnitConstant
Methods of the module object val UnitConstant
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
UnitConstant.type
Extension methods of ValDef
Methods of the module object val ValDef
Methods of the module object val ValDef
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
ValDef.type
Extension methods of While
Methods of the module object val While
Methods of the module object val While
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
While.type
Methods of the module object val Wildcard
Methods of the module object val Wildcard
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
Wildcard.type
Extension methods of WildcardTypeTree
Methods of the module object val WildcardTypeTree
Methods of the module object val WildcardTypeTree
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
WildcardTypeTree.type
Methods of the module object val defn
Methods of the module object val report
Methods of the module object val report
Attributes
- Source
- Quotes.scala
- Supertypes
- Self type
-
report.type
Types
Pattern representing X | Y | ...
alternatives.
Attributes
- Source
- Quotes.scala
Intersection type T & U
or an union type T | U
Intersection type T & U
Type tree representing an annotated type
A type with an annotation T @foo
Type tree representing a type application
A higher kinded type applied to some types T[U]
Tree representing an application of arguments. It represents a single list of arguments, multiple argument lists will have nested Apply
s
Tree representing an application of arguments. It represents a single list of arguments, multiple argument lists will have nested Apply
s
Attributes
- Source
- Quotes.scala
Tree representing an assignment x = y
in the source code
Pattern representing a _ @ _
binding.
Tree representing a block { ... }
in the source code
Constant Boolean value
Type tree representing a by name parameter
Type of a by-name definition of type =>T
.
Type of a by-name definition of type =>T
.
May represent by-name parameter such as thunk
in
type T
def log[T](thunk: => T): T = ???
May also represent a the return type of a parameterless method definition such as
def foo: Int = ???
Attributes
- Source
- Quotes.scala
Constant Byte value
Branch of a pattern match or catch clause
Constant Char value
Tree representing a class definition. This includes anonymous class definitions and the class of a module object
Tree representing a class definition. This includes anonymous class definitions and the class of a module object
Attributes
- Source
- Quotes.scala
Constant class value representing a classOf[T]
A lambda (...) => ...
in the source code is represented as a local method and a closure:
A lambda (...) => ...
in the source code is represented as a local method and a closure:
{ def m(...) = ... closure(m) }
Attributes
- Source
- Quotes.scala
Constant value represented as the constant itself
A singleton type representing a known constant value
Tree representing a method definition in the source code
Tree representing a definition in the source code. It can be ClassDef
, TypeDef
, DefDef
or ValDef
Tree representing a definition in the source code. It can be ClassDef
, TypeDef
, DefDef
or ValDef
Attributes
- Source
- Quotes.scala
Attributes
- Source
- Quotes.scala
Constant Double value
Tree representing an export clause in the source code. Export forwarders generated from this clause appear in the same scope.
Tree representing an export clause in the source code. Export forwarders generated from this clause appear in the same scope.
Attributes
- Source
- Quotes.scala
Flags of a Symbol
Constant Float value
given import/export selector: .given
/.{given T}
in import foo.given
/export foo.{given T}
given import/export selector: .given
/.{given T}
in import foo.given
/export foo.{given T}
Attributes
- Source
- Quotes.scala
Tree representing a reference to definition with a given name
Tree representing an if/then/else if (...) ... else ...
in the source code
Tree representing an if/then/else if (...) ... else ...
in the source code
Attributes
- Source
- Quotes.scala
Attributes
- Source
- Quotes.scala
Result of a given instance search
Attributes
- Source
- Quotes.scala
Tree representing an import in the source code.
Tree representing an import in the source code.
See also documentation on Selector
.
Attributes
- Source
- Quotes.scala
Type tree representing an inferred type
Tree representing the scope of an inlined tree
Constant Int value
Type of the definition of a method taking a single list of type or term parameters
Type of the definition of a method taking a single list of type or term parameters
Attributes
- Source
- Quotes.scala
Type tree representing a lambda abstraction type
Tree representing a literal value in the source code
Constant Long value
Tree representing a pattern match x match { ... }
in the source code
Case of a MatchType
containing pattern case P => R
.
Case of a MatchType
containing pattern case P => R
.
Note: cases with type bindings are represented nested in a TypeLambda
.
Attributes
- Source
- Quotes.scala
Type match T match { case U => ... }
Type tree representing a type match
Type of the definition of a method taking a single list of type or term parameters
Type of the definition of a method taking a single list of type or term parameters
Attributes
- Source
- Quotes.scala
Type of the definition of a method taking a single list of parameters. It's return type may be a MethodType.
Type of the definition of a method taking a single list of parameters. It's return type may be a MethodType.
Attributes
- Source
- Quotes.scala
Tree representing an argument passed with an explicit name. Such as arg1 = x
in foo(arg1 = x)
Tree representing an argument passed with an explicit name. Such as arg1 = x
in foo(arg1 = x)
Attributes
- Source
- Quotes.scala
Type of a reference to a type or term symbol
Tree representing new
in the source code
Attributes
- Source
- Quotes.scala
NoPrefix for a type selection
Constant null value
Omit import/export selector: .{bar => _}
in import foo.{bar => _}
Union type T | U
Tree representing a package clause in the source code
Tree representing a package clause in the source code
package foo {
// package stats
}
or
package foo.bar
// package stats
Attributes
- Source
- Quotes.scala
A parameter clause [X1, ..., Xn]
or (x1: X1, ..., xn: Xx)
A parameter clause [X1, ..., Xn]
or (x1: X1, ..., xn: Xx)
[X1, ..., Xn]
are represented with TypeParamClause
and (x1: X1, ..., xn: Xx)
are represented with TermParamClause
ParamClause
encodes the following enumeration
import scala.quoted.*
def inQuotes(using Quotes) = {
val q: Quotes = summon[Quotes]
import q.reflect.*
enum ParamClause:
case TypeParamClause(params: List[TypeDef])
case TermParamClause(params: List[ValDef])
}
Attributes
- Source
- Quotes.scala
Type of a parameter reference
Type of the definition of a method taking a list of type parameters. It's return type may be a MethodType.
Type of the definition of a method taking a list of type parameters. It's return type may be a MethodType.
Attributes
- Source
- Quotes.scala
Position in a source file
A type that is recursively defined this
A type that is recursively defined
Tree representing a reference to definition
Type tree representing a type refinement
A type with a type refinement T { type U }
Rename import/export selector: .{bar => baz}
in import foo.{bar => baz}
Rename import/export selector: .{bar => baz}
in import foo.{bar => baz}
Attributes
- Source
- Quotes.scala
Tree representing a variable argument list in the source code.
Tree representing a variable argument list in the source code.
This tree is used to encode varargs terms. The Repeated encapsulates the sequence of the elements but needs to be wrapped in a scala.<repeated>[T]
(see defn.RepeatedParamClass
). For example the arguments 1, 2
of List.apply(1, 2)
can be represented as follows:
import scala.quoted._
def inQuotes(using Quotes) = {
val q: Quotes = summon[Quotes]
import q.reflect._
val intArgs = List(Literal(IntConstant(1)), Literal(IntConstant(2)))
Typed(
Repeated(intArgs, TypeTree.of[Int]),
Inferred(defn.RepeatedParamClass.typeRef.appliedTo(TypeRepr.of[Int]))
)
}
Attributes
- Source
- Quotes.scala
Tree representing a return
in the source code
Tree representing a selection of definition with a given name on a given prefix
Tree representing a selection of definition with a given name on a given prefix
Attributes
- Source
- Quotes.scala
Tree representing a selection of definition with a given name on a given prefix and number of nested scopes of inlined trees
Tree representing a selection of definition with a given name on a given prefix and number of nested scopes of inlined trees
Attributes
- Source
- Quotes.scala
Import/Export selectors:
Import/Export selectors:
- SimpleSelector:
.bar
inimport foo.bar
- RenameSelector:
.{bar => baz}
inexport foo.{bar => baz}
- OmitSelector:
.{bar => _}
inimport foo.{bar => _}
- GivenSelector:
.given
/.{given T}
inexport foo.given
/import foo.{given T}
Attributes
- Source
- Quotes.scala
Constant Short value
The signature of a method
Simple import/export selector: .bar
in import foo.bar
Type tree representing a singleton type
Scala source file
Tree representing a statement in the source code
Constant String value
Tree representing a summoning match summonFrom { ... }
in the source code
Tree representing a summoning match summonFrom { ... }
in the source code
Attributes
- Source
- Quotes.scala
Tree representing super
in the source code
Type of a super
reference
Symbol of a definition. Symbols can be compared with ==
to know if two definitions are the same.
Symbol of a definition. Symbols can be compared with ==
to know if two definitions are the same.
Attributes
- Source
- Quotes.scala
Tree representing an expression in the source code
A term parameter clause (x1: X1, ..., xn: Xx)
Can also be (implicit X1, ..., Xn)
, (given X1, ..., Xn)
or (given x1: X1, ..., xn: Xn)
A term parameter clause (x1: X1, ..., xn: Xx)
Can also be (implicit X1, ..., Xn)
, (given X1, ..., Xn)
or (given x1: X1, ..., xn: Xn)
Attributes
- Source
- Quotes.scala
Type of a reference to a term symbol
Tree representing this
or C.this
in the source code
Type of this
Tree representing code written in the source
Tree representing a try catch try x catch { ... } finally { ... }
in the source code
Tree representing a try catch try x catch { ... } finally { ... }
in the source code
Attributes
- Source
- Quotes.scala
Tree representing an application of type arguments
Type tree representing a type binding
Type tree within a block with aliases { type U1 = ... ; T[U1, U2] }
Type bounds
Type tree representing a type bound written in the source
Branch of a type pattern match
Tree representing a type (parameter or member) definition in the source code
Tree representing a type (parameter or member) definition in the source code
Attributes
- Source
- Quotes.scala
Type tree representing a reference to definition with a given name
Type of the definition of a type lambda taking a list of type parameters. It's return type may be a TypeLambda.
Type of the definition of a type lambda taking a list of type parameters. It's return type may be a TypeLambda.
Attributes
- Source
- Quotes.scala
A type parameter clause [X1, ..., Xn]
Type tree representing a selection of definition with a given name on a given type prefix
Type tree representing a selection of definition with a given name on a given type prefix
Attributes
- Source
- Quotes.scala
Type of a reference to a type symbol
A type, type constructors, type bounds or NoPrefix
Type tree representing a selection of definition with a given name on a given term prefix
Type tree representing a selection of definition with a given name on a given term prefix
Attributes
- Source
- Quotes.scala
Type tree representing a type written in the source
Tree representing a type ascription x: T
in the source code.
Tree representing a type ascription x: T
in the source code.
Also represents a pattern that contains a term x
. Other : T
patterns use the more general TypedOrTest
.
Attributes
- Source
- Quotes.scala
Tree representing a type ascription or type test pattern x: T
in the source code.
Tree representing a type ascription or type test pattern x: T
in the source code.
Attributes
- Source
- Quotes.scala
Pattern representing a Xyz(...)
unapply.
Constant Unit value
Tree representing a value definition in the source code This includes val
, lazy val
, var
, object
and parameter definitions.
Tree representing a value definition in the source code This includes val
, lazy val
, var
, object
and parameter definitions.
Attributes
- Source
- Quotes.scala
Tree representing a while loop
Pattern representing a _
wildcard.
Type tree representing wildcard type bounds written in the source. The wildcard type _
(for example in in List[_]
) will be a type tree that represents a type but has TypeBounds
inside.
Type tree representing wildcard type bounds written in the source. The wildcard type _
(for example in in List[_]
) will be a type tree that represents a type but has TypeBounds
inside.
Attributes
- Source
- Quotes.scala
Value members
Abstract fields
Module object of type Alternatives
Module object of type AndType
Module object of type Annotated
Module object of type AnnotatedType
Module object of type Applied
Module object of type AppliedType
Module object of type Apply
Module object of type Assign
Module object of type Bind
Module object of type Block
Module object of type BooleanConstant
Module object of type ByName
Module object of type ByNameType
Module object of type ByteConstant
Module object of type CaseDef
Module object of type CharConstant
Module object of type ClassDef
Module object of type ClassOfConstant
Module object of type Closure
Module object of type CompilationInfo
Constant value represented as the constant itself
Module object of type ConstantType
Module object of type DefDef
Module object of type Definition
Module object of type DoubleConstant
Module object of type Export
Module object of type Flags
Module object of type FloatConstant
Module object of type GivenSelector
Module object of type Ident
Module object of type If
Module object of type Implicits
Module object of type Import
Module object of type Inferred
Module object of type Inlined
Module object of type IntConstant
A lambda (...) => ...
in the source code is represented as a local method and a closure:
A lambda (...) => ...
in the source code is represented as a local method and a closure:
{
def m(...) = ...
closure(m)
}
Attributes
- Note
-
Due to the encoding, in pattern matches the case for
Lambda
should come before the case forBlock
to avoid mishandling ofLambda
. - Source
- Quotes.scala
Module object of type LambdaTypeTree
Module object of type Literal
Module object of type LongConstant
Module object of type Match
Module object of type MatchCase
Module object of type MatchType
Module object of type MatchTypeTree
Module object of type MethodType
Module object of type NamedArg
Module object of type New
Module object of type NoPrefix
Module object of type NullConstant
Module object of type OmitSelector
Module object of type OmitSelector