scala.tools.nsc.ast

TreeGen

abstract class TreeGen extends TreeGen with TreeDSL

XXX to resolve: TreeGen only assumes global is a SymbolTable, but TreeDSL at the moment expects a Global. Can we get by with SymbolTable?

Source
TreeGen.scala
Linear Supertypes
TreeDSL, TreeGen, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. TreeGen
  2. TreeDSL
  3. TreeGen
  4. AnyRef
  5. Any
Visibility
  1. Public
  2. All

Instance Constructors

  1. new TreeGen()

Type Members

  1. class MatchMatcher extends AnyRef

Abstract Value Members

  1. abstract val global: Global

    Definition Classes
    TreeGenTreeDSLTreeGen

Concrete Value Members

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

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. object CODE extends AnyRef

  7. object VirtualCaseDef extends AnyRef

  8. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  9. def clone(): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  10. def convertToSelectFromType(qual: Tree, origName: Name): Tree with Serializable

    Try to convert Select(qual, name) to a SelectFromTypeTree.

  11. def convertToTypeName(tree: Tree): Option[RefTree]

    Translate names in Select/Ident nodes to type names.

  12. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  13. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  14. def evalOnce(expr: Tree, owner: Symbol, unit: CompilationUnit)(within: (() ⇒ Tree) ⇒ Tree): Tree

    Used in situations where you need to access value of an expression several times

  15. def evalOnceAll(exprs: List[Tree], owner: Symbol, unit: CompilationUnit)(within: (List[() ⇒ Tree]) ⇒ Tree): Tree

  16. def finalize(): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  17. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  18. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  19. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  20. def maybeMkAsInstanceOf(tree: Tree, pt: Type, tpe: Type, beforeRefChecks: Boolean = false): Tree

    Cast tree to pt, unless tpe is a subtype of pt, or pt is Unit.

    Cast tree to pt, unless tpe is a subtype of pt, or pt is Unit.

    Definition Classes
    TreeGen
  21. def mkAnd(tree1: Tree, tree2: Tree): Tree

    Definition Classes
    TreeGen
  22. def mkApplyIfNeeded(qual: Tree): Tree

    If this is a reference to a method with an empty parameter list, wrap it in an apply.

    If this is a reference to a method with an empty parameter list, wrap it in an apply.

    Definition Classes
    TreeGen
  23. def mkAsInstanceOf(value: Tree, tpe: Type, any: Boolean = true, wrapInApply: Boolean = true): Tree

    Builds a cast with given value and type.

    Builds a cast with given value and type.

    Definition Classes
    TreeGen
  24. def mkAssignAndReturn(lhs: Symbol, rhs: Tree): Tree

  25. def mkAttributedIdent(sym: Symbol): Tree

    Definition Classes
    TreeGen
  26. def mkAttributedQualifier(tpe: Type, termSym: Symbol): Tree

    Builds a reference to value whose type is given stable prefix.

    Builds a reference to value whose type is given stable prefix. If the type is unsuitable, e.g. it is a TypeRef for an abstract type variable, then an Ident will be made using termSym as the Ident's symbol. In that case, termSym must not be NoSymbol.

    Definition Classes
    TreeGen
  27. def mkAttributedQualifier(tpe: Type): Tree

    Builds a reference to value whose type is given stable prefix.

    Builds a reference to value whose type is given stable prefix. The type must be suitable for this. For example, it must not be a TypeRef pointing to an abstract type variable.

    Definition Classes
    TreeGen
  28. def mkAttributedRef(sym: Symbol): Tree

    Builds a reference to given symbol.

    Builds a reference to given symbol.

    Definition Classes
    TreeGen
  29. def mkAttributedRef(pre: Type, sym: Symbol): Tree

    Builds a reference to given symbol with given stable prefix.

    Builds a reference to given symbol with given stable prefix.

    Definition Classes
    TreeGen
  30. def mkAttributedSelect(qual: Tree, sym: Symbol): Tree

    Definition Classes
    TreeGen
  31. def mkAttributedStableRef(sym: Symbol): Tree

    Definition Classes
    TreeGen
  32. def mkAttributedStableRef(pre: Type, sym: Symbol): Tree

    Builds a reference with stable type to given symbol

    Builds a reference with stable type to given symbol

    Definition Classes
    TreeGen
  33. def mkAttributedThis(sym: Symbol): Tree

    Definition Classes
    TreeGen
  34. def mkAttributedTypeApply(target: Tree, method: Symbol, targs: List[Type]): Tree

    Definition Classes
    TreeGen
  35. def mkCached(cvar: Symbol, expr: Tree): Tree

  36. def mkCachedModuleAccessDef(accessor: Symbol, mvar: Symbol): DefDef

  37. def mkCast(tree: Tree, pt: Type): Tree

    Cast tree to type pt

    Cast tree to type pt

    Definition Classes
    TreeGen
  38. def mkCastArray(tree: Tree, elemtp: Type, pt: Type): Tree

    Generate a cast for tree Tree representing Array with elem type elemtp to expected type pt.

  39. def mkCheckInit(tree: Tree): Tree

  40. def mkClassOf(tp: Type): Tree

    Apparently we smuggle a Type around as a Literal(Constant(tp)) and the implementation of Constant#tpe is such that x.

    Apparently we smuggle a Type around as a Literal(Constant(tp)) and the implementation of Constant#tpe is such that x.tpe becomes ClassType(value.asInstanceOf[Type]), i.e. java.lang.Class[Type]. Can't find any docs on how/why it's done this way. See ticket SI-490 for some interesting comments from lauri alanko suggesting that the type given by classOf[T] is too strong and should be weakened so as not to suggest that classOf[List[String]] is any different from classOf[List[Int]].

    !!! See deconstMap in Erasure for one bug this encoding has induced: I would be very surprised if there aren't more.

    Definition Classes
    TreeGen
  41. def mkDoubleCheckedLocking(attrThis: Tree, cond: Tree, syncBody: List[Tree], stats: List[Tree]): Tree

  42. def mkDoubleCheckedLocking(clazz: Symbol, cond: Tree, syncBody: List[Tree], stats: List[Tree]): Tree

    Return a double-checked locking idiom around the syncBody tree.

    Return a double-checked locking idiom around the syncBody tree. It guards with cond and synchronizez on clazz.this. Additional statements can be included after initialization, (outside the synchronized block).

    The idiom works only if the condition is using a volatile field.

    See also

    http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

  43. def mkForwarder(target: Tree, vparamss: List[List[Symbol]]): Tree

    Make forwarder to method target, passing all parameters in params

  44. def mkIsInstanceOf(value: Tree, tpe: Type, any: Boolean = true, wrapInApply: Boolean = true): Tree

    Builds an instance test with given value and type.

    Builds an instance test with given value and type.

    Definition Classes
    TreeGen
  45. def mkManifestFactoryCall(full: Boolean, constructor: String, tparg: Type, args: List[Tree]): Tree

    A creator for a call to a scala.

    A creator for a call to a scala.reflect.Manifest or ClassManifest factory method.

    full

    full or partial manifest (target will be Manifest or ClassManifest)

    constructor

    name of the factory method (e.g. "classType")

    tparg

    the type argument

    args

    value arguments

    returns

    the tree

  46. def mkMethodCall(target: Tree, targs: List[Type], args: List[Tree]): Tree

    Definition Classes
    TreeGen
  47. def mkMethodCall(receiver: Tree, method: Symbol, targs: List[Type], args: List[Tree]): Tree

    Definition Classes
    TreeGen
  48. def mkMethodCall(receiver: Symbol, methodName: Name, args: List[Tree]): Tree

    Definition Classes
    TreeGen
  49. def mkMethodCall(target: Tree, args: List[Tree]): Tree

    Definition Classes
    TreeGen
  50. def mkMethodCall(method: Symbol, args: List[Tree]): Tree

    Definition Classes
    TreeGen
  51. def mkMethodCall(method: Symbol, targs: List[Type], args: List[Tree]): Tree

    Definition Classes
    TreeGen
  52. def mkMethodCall(receiver: Symbol, methodName: Name, targs: List[Type], args: List[Tree]): Tree

    A creator for method calls, e.

    A creator for method calls, e.g. fn[T1, T2, ...](v1, v2, ...) There are a number of variations.

    receiver

    symbol of the method receiver

    methodName

    name of the method to call

    targs

    type arguments (if Nil, no TypeApply node will be generated)

    args

    value arguments

    returns

    the newly created trees.

    Definition Classes
    TreeGen
  53. def mkModuleAccessDcl(accessor: Symbol): DefDef

  54. def mkModuleAccessDef(accessor: Symbol, msym: Symbol): DefDef

  55. def mkModuleVarDef(accessor: Symbol): ValDef

  56. def mkNewCons(head: Tree, tail: Tree): Tree

    Builds a list with given head and tail.

    Builds a list with given head and tail.

    Definition Classes
    TreeGen
  57. def mkNil: Tree

    Builds a list with given head and tail.

    Builds a list with given head and tail.

    Definition Classes
    TreeGen
  58. def mkOr(tree1: Tree, tree2: Tree): Tree

    Definition Classes
    TreeGen
  59. def mkRuntimeCall(meth: Name, targs: List[Type], args: List[Tree]): Tree

  60. def mkRuntimeCall(meth: Name, args: List[Tree]): Tree

  61. def mkSoftRef(expr: Tree): Tree

  62. def mkSynchronized(monitor: Tree, body: Tree): Tree

    Make a synchronized block on 'monitor'.

  63. def mkSysErrorCall(message: String): Tree

  64. def mkTuple(elems: List[Tree]): Tree

    Builds a tuple

    Builds a tuple

    Definition Classes
    TreeGen
  65. def mkTypeApply(target: Tree, method: Symbol, targs: List[Type]): Tree

    Definition Classes
    TreeGen
  66. def mkTypeApply(fun: Tree, targs: List[Tree]): Tree

    Builds a type application node if args.

    Builds a type application node if args.nonEmpty, returns fun otherwise.

    Definition Classes
    TreeGen
  67. def mkUnattributedRef(sym: Symbol): Tree

    Builds an untyped reference to given symbol.

    Builds an untyped reference to given symbol.

    Definition Classes
    TreeGen
  68. def mkUnchecked(expr: Tree): Tree

  69. def mkUncheckedMatch(tree: Tree): Tree

  70. def mkWildcardImport(pkg: Symbol): Import

    Builds a fully attributed wildcard import node.

  71. def mkWrapArray(tree: Tree, elemtp: Type): Tree

    Applies a wrapArray call to an array, making it a WrappedArray.

    Applies a wrapArray call to an array, making it a WrappedArray. Don't let a reference type parameter be inferred, in case it's a singleton: apply the element type directly.

  72. def mkZero(tp: Type): Tree

    Builds a tree representing an undefined local, as in var x: T = _ which is appropriate to the given Type.

    Builds a tree representing an undefined local, as in var x: T = _ which is appropriate to the given Type.

    Definition Classes
    TreeGen
  73. def mkZeroContravariantAfterTyper(tp: Type): Tree

    Definition Classes
    TreeGen
  74. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  75. def newModule(accessor: Symbol, tpe: Type): Tree

  76. final def notify(): Unit

    Definition Classes
    AnyRef
  77. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  78. def paramToArg(vparam: ValDef): Tree with Serializable

  79. def paramToArg(vparam: Symbol): Tree with Serializable

  80. def productConstr: Select

    Definition Classes
    TreeGen
  81. def rootId(name: Name): Select

    Definition Classes
    TreeGen
  82. def rootScalaDot(name: Name): Select

    Definition Classes
    TreeGen
  83. def scalaAnyRefConstr: Select

    Definition Classes
    TreeGen
  84. def scalaDot(name: Name): Select

    Definition Classes
    TreeGen
  85. def scalaFunctionConstr(argtpes: List[Tree], restpe: Tree, abstractFun: Boolean = false): Tree

    Definition Classes
    TreeGen
  86. def scalaScalaObjectConstr: Select

    Definition Classes
    TreeGen
  87. def scalaUnitConstr: Select

    Definition Classes
    TreeGen
  88. def serializableConstr: Select

    Definition Classes
    TreeGen
  89. def stabilize(tree: Tree): Tree

    Replaces tree type with a stable type if possible

    Replaces tree type with a stable type if possible

    Definition Classes
    TreeGen
  90. def stableTypeFor(tree: Tree): Option[Type]

    Computes stable type for a tree if possible

    Computes stable type for a tree if possible

    Definition Classes
    TreeGen
  91. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  92. def toString(): String

    Definition Classes
    AnyRef → Any
  93. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  94. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  95. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  96. def wildcardStar(tree: Tree): Typed

  97. def withDefaultCase(matchExpr: Tree, defaultAction: (Tree) ⇒ Tree): Tree

Inherited from TreeDSL

Inherited from TreeGen

Inherited from AnyRef

Inherited from Any