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
- Serializable
- Equals
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
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( ... )
-
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( ... )
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] to any2stringadd[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] to ArrowAssoc[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( ... ) @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] to Ensuring[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] to Ensuring[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] to Ensuring[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] to Ensuring[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] )
-
final
def
getClass(): Class[_]
- 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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
→[B](y: B): (Universe.Expr[T], B)
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] to ArrowAssoc[Universe.Expr[T]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
Deprecated Value Members
-
def
formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Universe.Expr[T] to StringFormat[Universe.Expr[T]] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)
instead ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.