scala.reflect.macro

# Context

#### trait Context extends Universe

Source
  Context.scala

Linear Supertypes
Universe, StandardNames, StandardDefinitions, AnnotationInfos, TreePrinters, Positions, Trees, Names, Scopes, Constants, Types, Symbols, AnyRef, Any
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. Hide All
2. Show all

1. Context
2. Universe
3. StandardNames
4. StandardDefinitions
5. AnnotationInfos
6. TreePrinters
7. Positions
8. Trees
9. Names
10. Scopes
11. Constants
12. Types
13. Symbols
14. AnyRef
15. Any

Visibility

1. Public
2. All

### Type Members

1. #### abstract class AbsConstant extends AnyRef

2. #### abstract class AbsDefinitions extends AnyRef

3. #### abstract class AbsModifiers extends AnyRef

4. #### abstract class AbsName extends AnyRef

5. #### abstract class AbsSymbol extends AnyRef

6. #### abstract class AbsTermNames extends AnyRef

7. #### abstract class AbsType extends AnyRef

   This class declares operations that are visible in a Type.

8. #### abstract class AbsTypeNames extends AnyRef

9. #### case class Alternative(trees: List[Tree]) extends Tree with TermTree with Product with Serializable

   Alternatives of patterns, eliminated by explicitouter, except for occurrences in encoded Switch stmt (=remaining Match(CaseDef(.

10. #### case class Annotated(annot: Tree, arg: Tree) extends Tree with Product with Serializable

    A tree that has an annotation attached to it.

11. #### abstract type AnnotatedType <: Type

    Definition Classes
      Types

12. #### abstract class AnnotatedTypeExtractor extends AnyRef

13. #### abstract type AnnotationInfo <: AnyRef

    Definition Classes
      AnnotationInfos

14. #### abstract class AnnotationInfoExtractor extends AnyRef

15. #### case class AppliedTypeTree(tpt: Tree, args: List[Tree]) extends Tree with TypTree with Product with Serializable

    Applied type <tpt> [ <args> ], eliminated by RefCheck

16. #### case class Apply(fun: Tree, args: List[Tree]) extends GenericApply with Product with Serializable

    Value application

17. #### case class ApplyDynamic(qual: Tree, args: List[Tree]) extends Tree with TermTree with SymTree with Product with Serializable

    Dynamic value application.

18. #### class ApplyImplicitView extends Apply

19. #### class ApplyToImplicitArgs extends Apply

20. #### abstract type ArrayAnnotArg <: ClassfileAnnotArg

    Definition Classes
      AnnotationInfos

21. #### abstract class ArrayAnnotArgExtractor extends AnyRef

22. #### case class ArrayValue(elemtpt: Tree, elems: List[Tree]) extends Tree with TermTree with Product with Serializable

    Array of expressions, needs to be translated in backend,

23. #### case class Assign(lhs: Tree, rhs: Tree) extends Tree with TermTree with Product with Serializable

    Assignment

24. #### case class AssignOrNamedArg(lhs: Tree, rhs: Tree) extends Tree with TermTree with Product with Serializable

    Either an assignment or a named argument.

25. #### class BackQuotedIdent extends Ident

26. #### case class Bind(name: Name, body: Tree) extends DefTree with Product with Serializable

    Bind of a variable to a rhs pattern, eliminated by explicitouter

27. #### case class Block(stats: List[Tree], expr: Tree) extends Tree with TermTree with Product with Serializable

    Block of expressions (semicolon separated expressions)

28. #### case class CaseDef(pat: Tree, guard: Tree, body: Tree) extends Tree with Product with Serializable

    Case clause in a pattern match, eliminated during explicitouter (except for occurrences in switch statements)

29. #### case class ClassDef(mods: Modifiers, name: TypeName, tparams: List[TypeDef], impl: Template) extends ImplDef with Product with Serializable

    A class definition.

30. #### abstract type ClassInfoType <: CompoundType

    The `ClassInfo` type signature is used to define parents and declarations of classes, traits, and objects.

    The `ClassInfo` type signature is used to define parents and declarations of classes, traits, and objects. If a class, trait, or object C is declared like this

            C extends P_1 with ... with P_m { D_1; ...; D_n}

    its `ClassInfo` type has the following form:

            ClassInfo(List(P_1, ..., P_m), Scope(D_1, ..., D_n), C)

    Definition Classes
      Types

31. #### abstract class ClassInfoTypeExtractor extends AnyRef

    An extractor class to create and pattern match with syntax `ClassInfo(parents, decls, clazz)` Here, `parents` is the list of parent types of the class, `decls` is the scope containing all declarations in the class, and `clazz` is the symbol of the class itself.

32. #### abstract type ClassfileAnnotArg <: AnyRef

    Definition Classes
      AnnotationInfos

33. #### abstract type CompoundType <: Type

    A subtype of Type representing refined types as well as `ClassInfo` signatures.

    A subtype of Type representing refined types as well as `ClassInfo` signatures.

    Definition Classes
      Types

34. #### case class CompoundTypeTree(templ: Template) extends Tree with TypTree with Product with Serializable

    Intersection type <parent1> with .

35. #### abstract type Constant <: AbsConstant

    Definition Classes
      Constants

36. #### abstract class ConstantExtractor extends AnyRef

37. #### abstract type ConstantType <: SingletonType

    The `ConstantType` type is not directly written in user programs, but arises as the type of a constant.

    The `ConstantType` type is not directly written in user programs, but arises as the type of a constant. The REPL expresses constant types like Int(11). Here are some constants with their types.

            1           ConstantType(Constant(1))
            "abc"       ConstantType(Constant("abc"))

    Definition Classes
      Types

38. #### abstract class ConstantTypeExtractor extends AnyRef

    An extractor class to create and pattern match with syntax `ConstantType(constant)` Here, `constant` is the constant value represented by the type.

39. #### case class DefDef(mods: Modifiers, name: Name, tparams: List[TypeDef], vparamss: List[List[ValDef]], tpt: Tree, rhs: Tree) extends ValOrDefDef with Product with Serializable

    A method or macro definition.

40. #### abstract class DefTree extends Tree with SymTree

    A tree which defines a symbol-carrying entity.

41. #### abstract type ExistentialType <: Type

    Definition Classes
      Types

42. #### abstract class ExistentialTypeExtractor extends AnyRef

43. #### case class ExistentialTypeTree(tpt: Tree, whereClauses: List[Tree]) extends Tree with TypTree with Product with Serializable

44. #### class FilterTreeTraverser extends Traverser

45. #### class FindTreeTraverser extends Traverser

46. #### class ForeachTreeTraverser extends Traverser

47. #### case class Function(vparams: List[ValDef], body: Tree) extends Tree with TermTree with SymTree with Product with Serializable

    Anonymous function, eliminated by analyzer

48. #### abstract class GenericApply extends Tree with TermTree

    Common base class for Apply and TypeApply.

49. #### case class Ident(name: Name) extends Tree with RefTree with Product with Serializable

    Identifier <name>

50. #### case class If(cond: Tree, thenp: Tree, elsep: Tree) extends Tree with TermTree with Product with Serializable

    Conditional expression

51. #### abstract class ImplDef extends MemberDef

    A common base class for class and object definitions.

52. #### case class Import(expr: Tree, selectors: List[ImportSelector]) extends Tree with SymTree with Product with Serializable

    Import clause

53. #### case class ImportSelector(name: Name, namePos: Int, rename: Name, renamePos: Int) extends Product with Serializable

    Import selector

54. #### case class LabelDef(name: TermName, params: List[Ident], rhs: Tree) extends DefTree with TermTree with Product with Serializable

    A labelled expression.

55. #### class LazyTreeCopier extends TreeCopierOps

56. #### case class Literal(value: Constant) extends Tree with TermTree with Product with Serializable

    Literal

57. #### abstract type LiteralAnnotArg <: ClassfileAnnotArg

    Definition Classes
      AnnotationInfos

58. #### abstract class LiteralAnnotArgExtractor extends AnyRef

59. #### case class Match(selector: Tree, cases: List[CaseDef]) extends Tree with TermTree with Product with Serializable

    - Pattern matching expression (before explicitouter)

60. #### abstract class MemberDef extends DefTree

    Common base class for all member definitions: types, classes, objects, packages, vals and vars, defs.

61. #### abstract type MethodType <: Type

    The `MethodType` type signature is used to indicate parameters and result type of a method

    The `MethodType` type signature is used to indicate parameters and result type of a method

    Definition Classes
      Types

62. #### abstract class MethodTypeExtractor extends AnyRef

    An extractor class to create and pattern match with syntax `MethodType(params, respte)` Here, `params` is a potentially empty list of parameter symbols of the method, and `restpe` is the result type of the method.

63. #### abstract type Modifiers <: AbsModifiers

    Definition Classes
      Trees

64. #### case class ModuleDef(mods: Modifiers, name: TermName, impl: Template) extends ImplDef with Product with Serializable

    An object definition, e.

65. #### abstract type Name >: Null <: AbsName

    The abstract type of names

    The abstract type of names

    Definition Classes
      Names

66. #### abstract type NestedAnnotArg <: ClassfileAnnotArg

    Definition Classes
      AnnotationInfos

67. #### abstract class NestedAnnotArgExtractor extends AnyRef

68. #### case class New(tpt: Tree) extends Tree with TermTree with Product with Serializable

    Object instantiation One should always use factory method below to build a user level new.

69. #### abstract type NullaryMethodType <: Type

    Definition Classes
      Types

70. #### abstract class NullaryMethodTypeExtractor extends AnyRef

71. #### case class PackageDef(pid: RefTree, stats: List[Tree]) extends MemberDef with Product with Serializable

    A packaging, such as `package pid { stats }`

72. #### abstract type PolyType <: Type

    Definition Classes
      Types

73. #### abstract class PolyTypeExtractor extends AnyRef

74. #### abstract type Position

    Definition Classes
      Universe → Positions

75. #### class RawTreePrinter extends TreePrinter

76. #### trait RefTree extends Tree with SymTree

    A tree which references a symbol-carrying entity.

77. #### abstract type RefinedType <: CompoundType

    The `RefinedType` type defines types of any of the forms on the left, with their RefinedType representations to the right.

    The `RefinedType` type defines types of any of the forms on the left, with their RefinedType representations to the right.

            P_1 with ... with P_m { D_1; ...; D_n}      RefinedType(List(P_1, ..., P_m), Scope(D_1, ..., D_n))
            P_1 with ... with P_m                       RefinedType(List(P_1, ..., P_m), Scope())
            { D_1; ...; D_n}                            RefinedType(List(AnyRef), Scope(D_1, ..., D_n))

    Definition Classes
      Types

78. #### abstract class RefinedTypeExtractor extends AnyRef

    An extractor class to create and pattern match with syntax `RefinedType(parents, decls)` Here, `parents` is the list of parent types of the class, and `decls` is the scope containing all declarations in the class.

79. #### case class Return(expr: Tree) extends Tree with TermTree with SymTree with Product with Serializable

    Return expression

80. #### abstract type Scope <: Iterable[Symbol]

    Definition Classes
      Scopes

81. #### case class Select(qualifier: Tree, name: Name) extends Tree with RefTree with Product with Serializable

    Designator <qualifier> .

82. #### case class SelectFromTypeTree(qualifier: Tree, name: TypeName) extends Tree with TypTree with RefTree with Product with Serializable

    Type selection <qualifier> # <name>, eliminated by RefCheck

83. #### abstract type SingleType <: SingletonType

    The `SingleType` type describes types of any of the forms on the left, with their TypeRef representations to the right.

    The `SingleType` type describes types of any of the forms on the left, with their TypeRef representations to the right.

            (T # x).type             SingleType(T, x)
            p.x.type                 SingleType(p.type, x)
            x.type                   SingleType(NoPrefix, x)

    Definition Classes
      Types

84. #### abstract class SingleTypeExtractor extends AnyRef

    An extractor class to create and pattern match with syntax `SingleType(pre, sym)` Here, `pre` is the prefix of the single-type, and `sym` is the stable value symbol referred to by the single-type.

85. #### abstract type SingletonType >: Null <: Type

    The type of Scala singleton types, i.

    The type of Scala singleton types, i.e. types that are inhabited by only one nun-null value. These include types of the forms

           C.this.type
           C.super.type
           x.type

    as well as constant types.

    Definition Classes
      Types

86. #### case class SingletonTypeTree(ref: Tree) extends Tree with TypTree with Product with Serializable

    Singleton type, eliminated by RefCheck

87. #### case class Star(elem: Tree) extends Tree with TermTree with Product with Serializable

    Repetition of pattern, eliminated by explicitouter

88. #### class StrictTreeCopier extends TreeCopierOps

89. #### case class Super(qual: Tree, mix: TypeName) extends Tree with TermTree with Product with Serializable

    Super reference, qual = corresponding this reference

90. #### abstract type SuperType <: SingletonType

    The `SuperType` type is not directly written, but arises when `C.super` is used as a prefix in a `TypeRef` or `SingleType`.

    The `SuperType` type is not directly written, but arises when `C.super` is used as a prefix in a `TypeRef` or `SingleType`. It's internal presentation is

            SuperType(thistpe, supertpe)

    Here, `thistpe` is the type of the corresponding this-type. For instance, in the type arising from C.super, the `thistpe` part would be `ThisType(C)`. `supertpe` is the type of the super class referred to by the `super`.

    Definition Classes
      Types

91. #### abstract class SuperTypeExtractor extends AnyRef

    An extractor class to create and pattern match with syntax `SingleType(thistpe, supertpe)`

92. #### trait SymTree extends Tree

    A tree with a mutable symbol field, initialized to NoSymbol.

93. #### abstract type Symbol >: Null <: AbsSymbol

    Definition Classes
      Symbols

94. #### case class Template(parents: List[Tree], self: ValDef, body: List[Tree]) extends Tree with SymTree with Product with Serializable

    Instantiation template of a class or trait

95. #### abstract type TermName <: Name

    The abstract type of names representing types

    The abstract type of names representing types

    Definition Classes
      Names

96. #### trait TermTree extends Tree

    A tree for a term.

97. #### case class This(qual: TypeName) extends Tree with TermTree with SymTree with Product with Serializable

    Self reference

98. #### abstract type ThisType <: SingletonType

    The `ThisType` type describes types of the form on the left with the correspnding ThisType representations to the right.

    The `ThisType` type describes types of the form on the left with the correspnding ThisType representations to the right.

            C.this.type             ThisType(C)

    Definition Classes
      Types

99. #### abstract class ThisTypeExtractor extends AnyRef

    An extractor class to create and pattern match with syntax `ThisType(sym)` where `sym` is the class prefix of the this type.

100. #### case class Throw(expr: Tree) extends Tree with TermTree with Product with Serializable

     Throw expression

101. #### abstract class Transformer extends AnyRef

102. #### class Traverser extends AnyRef

103. #### abstract class Tree extends Product

     Tree is the basis for scala's abstract syntax.

104. #### abstract type TreeCopier <: TreeCopierOps

     Definition Classes
       Trees

105. #### trait TreeCopierOps extends AnyRef

106. #### trait TreePrinter extends AnyRef

107. #### case class Try(block: Tree, catches: List[CaseDef], finalizer: Tree) extends Tree with TermTree with Product with Serializable

108. #### trait TypTree extends Tree

     A tree for a type.

109. #### abstract type Type >: Null <: AbsType

     The type of Scala types, and also Scala type signatures.

     The type of Scala types, and also Scala type signatures. (No difference is internally made between the two).

     Definition Classes
       Types

110. #### case class TypeApply(fun: Tree, args: List[Tree]) extends GenericApply with Product with Serializable

     Explicit type application.

111. #### abstract type TypeBounds <: Type

     The `TypeBounds` type signature is used to indicate lower and upper type bounds of type parameters and abstract types.

     The `TypeBounds` type signature is used to indicate lower and upper type bounds of type parameters and abstract types. It is not a first-class type. If an abstract type or type parameter is declared with any of the forms on the left, its type signature is the TypeBounds type on the right.

             T >: L <: U               TypeBounds(L, U)
             T >: L                    TypeBounds(L, Any)
             T <: U                    TypeBounds(Nothing, U)

     Definition Classes
       Types

112. #### abstract class TypeBoundsExtractor extends AnyRef

     An extractor class to create and pattern match with syntax `TypeBound(lower, upper)` Here, `lower` is the lower bound of the `TypeBounds` pair, and `upper` is the upper bound.

113. #### case class TypeBoundsTree(lo: Tree, hi: Tree) extends Tree with TypTree with Product with Serializable

114. #### case class TypeDef(mods: Modifiers, name: TypeName, tparams: List[TypeDef], rhs: Tree) extends MemberDef with Product with Serializable

     An abstract type, a type parameter, or a type alias.

115. #### abstract type TypeName <: Name

     The abstract type of names representing terms

     The abstract type of names representing terms

     Definition Classes
       Names

116. #### abstract type TypeRef <: Type

     The `TypeRef` type describes types of any of the forms on the left, with their TypeRef representations to the right.

     The `TypeRef` type describes types of any of the forms on the left, with their TypeRef representations to the right.

             T # C[T_1, ..., T_n]      TypeRef(T, C, List(T_1, ..., T_n))
             p.C[T_1, ..., T_n]        TypeRef(p.type, C, List(T_1, ..., T_n))
             C[T_1, ..., T_n]          TypeRef(NoPrefix, C, List(T_1, ..., T_n))
             T # C                     TypeRef(T, C, Nil)
             p.C                       TypeRef(p.type, C, Nil)
             C                         TypeRef(NoPrefix, C, Nil)

     Definition Classes
       Types

117. #### abstract class TypeRefExtractor extends AnyRef

     An extractor class to create and pattern match with syntax `TypeRef(pre, sym, args)` Here, `pre` is the prefix of the type reference, `sym` is the symbol referred to by the type reference, and `args` is a possible empty list of type argumenrts.

118. #### case class TypeTree() extends Tree with TypTree with Product with Serializable

     A synthetic tree holding an arbitrary type.

119. #### case class Typed(expr: Tree, tpt: Tree) extends Tree with TermTree with Product with Serializable

     Type annotation, eliminated by explicit outer

120. #### case class UnApply(fun: Tree, args: List[Tree]) extends Tree with TermTree with Product with Serializable

121. #### case class ValDef(mods: Modifiers, name: TermName, tpt: Tree, rhs: Tree) extends ValOrDefDef with Product with Serializable

     A value definition (this includes vars as well, which differ from vals only in having the MUTABLE flag set in their Modifiers.

122. #### abstract class ValOrDefDef extends MemberDef

     A common base class for ValDefs and DefDefs.

### Abstract Value Members

1. #### abstract val AnnotatedType: AnnotatedTypeExtractor

   Definition Classes
     Types

2. #### abstract val AnnotationInfo: AnnotationInfoExtractor

   Definition Classes
     AnnotationInfos

3. #### abstract val ArrayAnnotArg: ArrayAnnotArgExtractor

   Definition Classes
     AnnotationInfos

4. #### abstract val ClassInfoType: ClassInfoTypeExtractor

   The constructor/deconstructor for `ClassInfoType` instances.

   The constructor/deconstructor for `ClassInfoType` instances.

   Definition Classes
     Types

5. #### abstract val Constant: ConstantExtractor

   Definition Classes
     Constants

6. #### abstract val ConstantType: ConstantTypeExtractor

   The constructor/deconstructor for `ConstantType` instances.

   The constructor/deconstructor for `ConstantType` instances.

   Definition Classes
     Types

7. #### abstract val ExistentialType: ExistentialTypeExtractor

   Definition Classes
     Types

8. #### abstract val LiteralAnnotArg: LiteralAnnotArgExtractor

   Definition Classes
     AnnotationInfos

9. #### abstract val MethodType: MethodTypeExtractor

   The constructor/deconstructor for `MethodType` instances.

   The constructor/deconstructor for `MethodType` instances.

   Definition Classes
     Types

10. #### abstract def Modifiers(mods: Set[Modifier] = Set(), privateWithin: Name = EmptyTypeName, annotations: List[Tree] = List()): Modifiers

    Definition Classes
      Trees

11. #### abstract val NestedAnnotArg: NestedAnnotArgExtractor

    Definition Classes
      AnnotationInfos

12. #### abstract val NoPosition: Position

    Definition Classes
      Universe → Positions

13. #### abstract val NoPrefix: Type

    This constant is used as a special value denoting the empty prefix in a path dependent type.

    This constant is used as a special value denoting the empty prefix in a path dependent type. For instance `x.type` is represented as `SingleType(NoPrefix, <x>)`, where `<x>` stands for the symbol for `x`.

    Definition Classes
      Types

14. #### abstract val NoSymbol: Symbol

    Definition Classes
      Symbols

15. #### abstract val NoType: Type

    This constant is used as a special value that indicates that no meaningful type exists.

    This constant is used as a special value that indicates that no meaningful type exists.

    Definition Classes
      Types

16. #### abstract val NullaryMethodType: NullaryMethodTypeExtractor

    Definition Classes
      Types

17. #### abstract val PolyType: PolyTypeExtractor

    Definition Classes
      Types

18. #### abstract val RefinedType: RefinedTypeExtractor

    The constructor/deconstructor for `RefinedType` instances.

    The constructor/deconstructor for `RefinedType` instances.

    Definition Classes
      Types

19. #### abstract val SingleType: SingleTypeExtractor

    The constructor/deconstructor for `SingleType` instances.

    The constructor/deconstructor for `SingleType` instances.

    Definition Classes
      Types

20. #### abstract val SuperType: SuperTypeExtractor

    The constructor/deconstructor for `SuperType` instances.

    The constructor/deconstructor for `SuperType` instances.

    Definition Classes
      Types

21. #### abstract val ThisType: ThisTypeExtractor

    The constructor/deconstructor for `ThisType` instances.

    The constructor/deconstructor for `ThisType` instances.

    Definition Classes
      Types

22. #### abstract val TypeBounds: TypeBoundsExtractor

    The constructor/deconstructor for `TypeBounds` instances.

    The constructor/deconstructor for `TypeBounds` instances.

    Definition Classes
      Types

23. #### abstract val TypeRef: TypeRefExtractor

    The constructor/deconstructor for `TypeRef` instances.

    The constructor/deconstructor for `TypeRef` instances.

    Definition Classes
      Types

24. #### abstract def captureVariable(vble: Symbol): Unit

    Mark a variable as captured; i.

    Mark a variable as captured; i.e. force boxing in a *Ref type.

25. #### implicit abstract def classfileAnnotArgManifest: ClassManifest[ClassfileAnnotArg]

    Definition Classes
      AnnotationInfos

26. #### abstract val definitions: AbsDefinitions

    Definition Classes
      StandardDefinitions

27. #### abstract def duplicateTree(tree: Tree): Tree

    Attributes
      protected
    Definition Classes
      Trees

28. #### abstract def emptyValDef: ValDef

    An empty deferred value definition corresponding to: val _: _ This is used as a placeholder in the `self` parameter Template if there is no definition of a self value of self type.

    An empty deferred value definition corresponding to: val _: _ This is used as a placeholder in the `self` parameter Template if there is no definition of a self value of self type.

    Definition Classes
      Trees

29. #### abstract def glb(ts: List[Type]): Type

    The greatest lower bound wrt <:< of a list of types

    The greatest lower bound wrt <:< of a list of types

    Definition Classes
      Types

30. #### abstract def lub(xs: List[Type]): Type

    The least upper bound wrt <:< of a list of types

    The least upper bound wrt <:< of a list of types

    Definition Classes
      Types

31. #### abstract def newLazyTreeCopier: TreeCopier

    Definition Classes
      Trees

32. #### abstract def newScope(): Scope

    Definition Classes
      Scopes

33. #### abstract def newStrictTreeCopier: TreeCopier

    Definition Classes
      Trees

34. #### abstract def newTermName(s: String): TermName

    Create a new term name.

    Create a new term name.

    Definition Classes
      Names

35. #### abstract def newTreePrinter(out: PrintWriter): TreePrinter

    Hook to define what `show(tree)` means.

    Hook to define what `show(tree)` means.

    Definition Classes
      TreePrinters

36. #### abstract def newTypeName(s: String): TypeName

    Creates a new type name.

    Creates a new type name.

    Definition Classes
      Names

37. #### abstract val nme: AbsTermNames

    Definition Classes
      StandardNames

38. #### abstract def referenceCapturedVariable(id: Ident): Tree

    Mark given identifier as a reference to a captured variable itself suppressing dereferencing with the `elem` field.

39. #### abstract def reify(tree: Tree): Tree

    Given a tree or type, generate a tree that when executed at runtime produces the original tree or type.

    Given a tree or type, generate a tree that when executed at runtime produces the original tree or type. For instance, given the abstract syntax tree representation of the `x + 1` expression:

    Apply(Select(Ident("x"), "+"), List(Literal(Constant(1))))

    The reifier transforms it to the following tree:

    $mr.Apply($mr.Select($mr.Ident($mr.newFreeVar("x", <Int>, x), "+"), List($mr.Literal($mr.Constant(1))))))

    The transformation looks mostly straightforward, but it has its tricky parts: * Reifier retains symbols and types defined outside the reified tree, however locally defined entities get erased and replaced with their original trees * Free variables are detected and wrapped in symbols of the type FreeVar * Mutable variables that are accessed from a local function are wrapped in refs * Since reified trees can be compiled outside of the scope they've been created in, special measures are taken to ensure that all freeVars remain visible

    Typical usage of this function is to retain some of the trees received/created by a macro into the form that can be inspected (via pattern matching) or compiled/run (by a reflective ToolBox) during the runtime.

40. #### abstract val tpnme: AbsTypeNames

    Definition Classes
      StandardNames

### Concrete Value Members

1. #### final def !=(arg0: AnyRef): Boolean

   Definition Classes
     AnyRef

2. #### final def !=(arg0: Any): Boolean

   Test two objects for inequality.

   Test two objects for inequality.

   returns

     `true` if !(this == that), false otherwise.

   Definition Classes
     Any

3. #### final def ##(): Int

   Equivalent to `x.hashCode` except for boxed numeric types and `null`.

   Equivalent to `x.hashCode` except for boxed numeric types and `null`. For numerics, it returns a hash value which is consistent with value equality: if two value type instances compare as true, then ## will produce the same hash value for each of them. For `null` returns a hashcode where `null.hashCode` throws a `NullPointerException`.

   returns

     a hash value consistent with ==

   Definition Classes
     AnyRef → Any

4. #### final def ==(arg0: AnyRef): Boolean

   Definition Classes
     AnyRef

5. #### final def ==(arg0: Any): Boolean

   Test two objects for equality.

   Test two objects for equality. The expression `x == that` is equivalent to `if (x eq null) that eq null else x.equals(that)`.

   returns

     `true` if the receiver object is equivalent to the argument; `false` otherwise.

   Definition Classes
     Any

6. #### def EmptyTermName: TermName

   Definition Classes
     Names

7. #### object EmptyTree extends Tree with TermTree with Product with Serializable

   The empty tree

8. #### def EmptyTypeName: TypeName

   Definition Classes
     Names

9. #### def Ident(sym: Symbol): Ident

   Definition Classes
     Trees

10. #### def Ident(name: String): Ident

    Definition Classes
      Trees

11. #### def New(tpt: Tree, argss: List[List[Tree]]): Tree

    Factory method for object creation `new tpt(args_1)...(args_n)` A `New(t, as)` is expanded to: `(new t).<init>(as)`

    Factory method for object creation `new tpt(args_1)...(args_n)` A `New(t, as)` is expanded to: `(new t).<init>(as)`

    Definition Classes
      Trees

12. #### def Select(qualifier: Tree, sym: Symbol): Select

    Definition Classes
      Trees

13. #### def Select(qualifier: Tree, name: String): Select

    Definition Classes
      Trees

14. #### def This(sym: Symbol): Tree

    Definition Classes
      Trees

15. #### def TypeTree(tp: Type): TypeTree

    Definition Classes
      Trees

16. #### final def asInstanceOf[T0]: T0

    Cast the receiver object to be of type `T0`.

    Cast the receiver object to be of type `T0`.

    Note that the success of a cast at runtime is modulo Scala's erasure semantics. Therefore the expression `1.asInstanceOf[String]` will throw a `ClassCastException` at runtime, while the expression `List(1).asInstanceOf[List[String]]` will not. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested type.

    returns

      the receiver object.

    Definition Classes
      Any
    Exceptions thrown
      ClassCastException

      if the receiver object is not an instance of the erasure of type `T0`.

17. #### def clone(): AnyRef

    Create a copy of the receiver object.

    Create a copy of the receiver object.

    The default implementation of the `clone` method is platform dependent.

    returns

      a copy of the receiver object.

    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws()
    Note

      not specified by SLS as a member of AnyRef

18. #### final def eq(arg0: AnyRef): Boolean

    Tests whether the argument (`arg0`) is a reference to the receiver object (`this`).

    Tests whether the argument (`arg0`) is a reference to the receiver object (`this`).

    The `eq` method implements an equivalence relation on non-null instances of `AnyRef`, and has three additional properties:

    - It is consistent: for any non-null instances `x` and `y` of type `AnyRef`, multiple invocations of `x.eq(y)` consistently returns `true` or consistently returns `false`.
    - For any non-null instance `x` of type `AnyRef`, `x.eq(null)` and `null.eq(x)` returns `false`.
    - `null.eq(null)` returns `true`.

    When overriding the `equals` or `hashCode` methods, it is important to ensure that their behavior is consistent with reference equality. Therefore, if two objects are references to each other (`o1 eq o2`), they should be equal to each other (`o1 == o2`) and they should hash to the same value (`o1.hashCode == o2.hashCode`).

    returns

      `true` if the argument is a reference to the receiver object; `false` otherwise.

    Definition Classes
      AnyRef

19. #### def equals(arg0: Any): Boolean

    The equality method for reference types.

    The equality method for reference types. Default implementation delegates to `eq`.

    See also `equals` in Any.

    returns

      `true` if the receiver object is equivalent to the argument; `false` otherwise.

    Definition Classes
      AnyRef → Any

20. #### def finalize(): Unit

    Called by the garbage collector on the receiver object when there are no more references to the object.

    Called by the garbage collector on the receiver object when there are no more references to the object.

    The details of when and if the `finalize` method is invoked, as well as the interaction between `finalize` and non-local returns and exceptions, are all platform dependent.

    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws()
    Note

      not specified by SLS as a member of AnyRef

21. #### final def getClass(): Class[_]

    A representation that corresponds to the dynamic class of the receiver object.

    A representation that corresponds to the dynamic class of the receiver object.

    The nature of the representation is platform dependent.

    returns

      a representation that corresponds to the dynamic class of the receiver object.

    Definition Classes
      AnyRef → Any
    Note

      not specified by SLS as a member of AnyRef

22. #### def hashCode(): Int

    The hashCode method for reference types.

    The hashCode method for reference types. See hashCode in Any.

    returns

      the hash code value for this object.

    Definition Classes
      AnyRef → Any

23. #### final def isInstanceOf[T0]: Boolean

    Test whether the dynamic type of the receiver object is `T0`.

    Test whether the dynamic type of the receiver object is `T0`.

    Note that the result of the test is modulo Scala's erasure semantics. Therefore the expression `1.isInstanceOf[String]` will return `false`, while the expression `List(1).isInstanceOf[List[String]]` will return `true`. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the specified type.

    returns

      `true` if the receiver object is an instance of erasure of type `T0`; `false` otherwise.

    Definition Classes
      Any

24. #### final def ne(arg0: AnyRef): Boolean

    Equivalent to `!(this eq that)`.

    Equivalent to `!(this eq that)`.

    returns

      `true` if the argument is not a reference to the receiver object; `false` otherwise.

    Definition Classes
      AnyRef

25. #### final def notify(): Unit

    Wakes up a single thread that is waiting on the receiver object's monitor.

    Wakes up a single thread that is waiting on the receiver object's monitor.

    Definition Classes
      AnyRef
    Note

      not specified by SLS as a member of AnyRef

26. #### final def notifyAll(): Unit

    Wakes up all threads that are waiting on the receiver object's monitor.

    Wakes up all threads that are waiting on the receiver object's monitor.

    Definition Classes
      AnyRef
    Note

      not specified by SLS as a member of AnyRef

27. #### def show(tree: Tree, mkPrinter: (PrintWriter) ⇒ TreePrinter = newTreePrinter): String

    Definition Classes
      TreePrinters

28. #### def showRaw(tree: Tree): String

    Definition Classes
      TreePrinters

29. #### final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
      AnyRef

30. #### def toString(): String

    Creates a String representation of this object.

    Creates a String representation of this object. The default representation is platform dependent. On the java platform it is the concatenation of the class name, "@", and the object's hashcode in hexadecimal.

    returns

      a String representation of the object.

    Definition Classes
      AnyRef → Any

31. #### val treeCopy: TreeCopier

    Definition Classes
      Trees

32. #### final def wait(): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws()

33. #### final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws()

34. #### final def wait(arg0: Long): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws()

35. #### def xtransform(transformer: Transformer, tree: Tree): Tree

    Attributes
      protected
    Definition Classes
      Trees

36. #### def xtraverse(traverser: Traverser, tree: Tree): Unit

    Attributes
      protected
    Definition Classes
      Trees

### Inherited from Universe

### Inherited from StandardNames

### Inherited from StandardDefinitions

### Inherited from AnnotationInfos

### Inherited from TreePrinters

### Inherited from Positions

### Inherited from Trees

### Inherited from Names

### Inherited from Scopes

### Inherited from Constants

### Inherited from Types

### Inherited from Symbols

### Inherited from AnyRef

### Inherited from Any