trait Expr[+T] extends Equals with Serializable
Expr wraps an abstract syntax tree and tags it with its type. The main source of information about exprs is the scala.reflect.api.Exprs page.
- Source
- Exprs.scala
- Alphabetic
- By Inheritance
- Expr
- Serializable
- Equals
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def actualType: Universe.Type
Type of the wrapped expression tree as found in the underlying tree.
- abstract def in[U <: Universe with Singleton](otherMirror: Mirror[U]): in.U.Expr[T]
Migrates the expression into another mirror, jumping into a different universe if necessary.
- abstract val mirror: Universe.Mirror
Underlying mirror of this expr.
- abstract def splice: T
A dummy method to mark expression splicing in reification.
A dummy method to mark expression splicing in reification.
It should only be used within a
reify
call, which eliminates thesplice
call and embeds the wrapped tree into the reified surrounding expression. If used alonesplice
throws an exception when called at runtime.If you want to use an Expr in reification of some Scala code, you need to splice it in. For an expr of type
Expr[T]
, whereT
has a methodfoo
, the following codereify{ expr.splice.foo }
uses splice to turn an expr of type Expr[T] into a value of type T in the context of
reify
.It is equivalent to
Select( expr.tree, TermName("foo") )
The following example code however does not compile
reify{ expr.foo }
because expr of type Expr[T] itself does not have a method foo.
- Annotations
- @compileTimeOnly("splice must be enclosed within a reify {} block")
- abstract def staticType: Universe.Type
Type of the wrapped expression tree as provided during creation.
Type of the wrapped expression tree as provided during creation.
When exprs are created by the compiler,
staticType
represents a statically known type of the tree as calculated at that point by the compiler. - abstract def tree: Universe.Tree
The Scala abstract syntax tree representing the wrapped expression.
- abstract val value: T
A dummy value to denote cross-stage path-dependent type dependencies.
A dummy value to denote cross-stage path-dependent type dependencies.
For example for the following macro definition:
class X { type T } object Macros { def foo(x: X): x.T = macro Impls.foo_impl }
The corresponding macro implementation should have the following signature (note how the return type denotes path-dependency on x):
object Impls { def foo_impl(c: Context)(x: c.Expr[X]): c.Expr[x.value.T] = ... }
- Annotations
- @compileTimeOnly("cannot use value except for signatures of macro implementations")
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toany2stringadd[Universe.Expr[T]] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (Universe.Expr[T], B)
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toArrowAssoc[Universe.Expr[T]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def canEqual(x: Any): Boolean
- Definition Classes
- Expr → Equals
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def ensuring(cond: (Universe.Expr[T]) => Boolean, msg: => Any): Universe.Expr[T]
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toEnsuring[Universe.Expr[T]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (Universe.Expr[T]) => Boolean): Universe.Expr[T]
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toEnsuring[Universe.Expr[T]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): Universe.Expr[T]
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toEnsuring[Universe.Expr[T]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): Universe.Expr[T]
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toEnsuring[Universe.Expr[T]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(x: Any): Boolean
- Definition Classes
- Expr → Equals → AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toStringFormat[Universe.Expr[T]] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @inline()
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- Expr → AnyRef → Any
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- Expr → AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
Deprecated Value Members
- def →[B](y: B): (Universe.Expr[T], B)
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] toArrowAssoc[Universe.Expr[T]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.