Trait

scala.tools.refactoring.common

EnrichedTrees

Related Doc: package common

Permalink

trait EnrichedTrees extends TracingImpl

A collection of implicit conversions for ASTs and other helper functions that work on trees.

Self Type
EnrichedTrees with CompilerAccess
Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. EnrichedTrees
  2. SilentTracing
  3. Tracing
  4. AnyRef
  5. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Type Members

  1. implicit class DefDefMethods extends AnyRef

    Permalink
  2. case class ImportSelectorTree(name: (EnrichedTrees.this)#NameTree, rename: nsc.Global.Tree) extends nsc.Global.Tree with Product with Serializable

    Permalink

    Represent an import selector as a tree, including both names as trees.

  3. implicit class ImportSelectorTreeExtractor extends AnyRef

    Permalink

    Import selectors are not trees, but we can provide an extractor that converts the ImportSelectors into our own ImportSelectorTrees.

  4. case class ModifierTree(flag: Long) extends nsc.Global.Tree with Product with Serializable

    Permalink

    Represent a modifier as a tree, including its position.

  5. case class MultipleAssignment(extractor: nsc.Global.Tree, names: List[nsc.Global.ValDef], rhs: nsc.Global.Tree) extends nsc.Global.Tree with Product with Serializable

    Permalink
  6. case class NameTree(name: nsc.Global.Name) extends nsc.Global.Tree with Product with Serializable

    Permalink

    Represent a Name as a tree, including its position.

  7. case class NamedArgument(nameTree: (EnrichedTrees.this)#NameTree, rhs: nsc.Global.Tree) extends nsc.Global.SymTree with nsc.Global.RefTree with Product with Serializable

    Permalink
  8. class NotInstanceOf[T] extends AnyRef

    Permalink
  9. abstract class PlainText extends nsc.Global.Tree

    Permalink

    The PlainText "tree" provides a hook into the source code generation.

    The PlainText "tree" provides a hook into the source code generation. When a PlainText tree occurs during source code generation, its print method is called with the current AbstractPrinter#PrintingContext. The result is inserted into the generated source code.

    For some use cases (blank line, raw and indented string) implementations already exist in the PlainText object.

    Note that PlainText trees should never be allowed to escape the Scala refactoring library, so be careful when using compiler utilities to transform trees.

  10. implicit class RichModifiers extends AnyRef

    Permalink
  11. case class SelfTypeTree(name: (EnrichedTrees.this)#NameTree, tpt: nsc.Global.Tree) extends nsc.Global.Tree with Product with Serializable

    Permalink

    Representation of self type annotations: self: A with B => ^^^^^^^^^^^^^^

  12. case class SuperConstructorCall(clazz: nsc.Global.Tree, args: List[nsc.Global.Tree]) extends nsc.Global.Tree with Product with Serializable

    Permalink

    The call to the super constructor in a class: class A(i: Int) extends B(i) ^^^^

  13. class TemplateMethods extends AnyRef

    Permalink
  14. implicit class TraceAndReturn[T] extends AnyRef

    Permalink
    Definition Classes
    Tracing
  15. class TreeMethodsForPositions extends AnyRef

    Permalink

    Add some methods to Tree that make it easier to compare Trees by position and to extract the position of a tree's name, which is tricky for Selects.

  16. case class SourceLayoutTree(kind: Kinds) extends nsc.Global.Tree with Product with Serializable

    Permalink

    A SourceLayoutTree can be used to insert arbitrary text into the code, for example, blank lines.

    A SourceLayoutTree can be used to insert arbitrary text into the code, for example, blank lines.

    Annotations
    @deprecated
    Deprecated

    (Since version 0.5.0) Use PlainText objects and its components

Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. object ApplyExtractor

    Permalink

    Extracts information from ApplyNodes

    Extracts information from ApplyNodes

    The main feature of this extractor is that reverses the desugarings the compiler performs for named arguments by creating scala.tools.refactoring.common.EnrichedTrees.NamedArgument instances as necessary. Apart from that, this object is meant to mimic the regular scala.reflect.api.Trees.ApplyExtractor.

  5. object BlockExtractor

    Permalink

    Unify the children of a Block tree and sort them in the same order they appear in the source code.

    Unify the children of a Block tree and sort them in the same order they appear in the source code.

    Also reshapes some trees: multiple assignments are removed and named argument trees are created.

    Note that this extractor is needed primarily for tree printing. The rename refactoring for example, that doesn't use tree printing, would work with

    object BlockExtractor {
      def unapply(t: Block) = {
        Some(t.expr :: t.stats)
      }
    }

    as well.

  6. object ModifierTree extends Serializable

    Permalink

    Extract the modifiers with their position from a Modifiers object.

  7. object NameTree extends Serializable

    Permalink
  8. object NoBlock extends (EnrichedTrees.this)#NotInstanceOf[nsc.Global.Block]

    Permalink
  9. object NoFunction extends (EnrichedTrees.this)#NotInstanceOf[nsc.Global.Function]

    Permalink
  10. object NoImportSelectorTree extends (EnrichedTrees.this)#NotInstanceOf[(EnrichedTrees.this)#ImportSelectorTree]

    Permalink
  11. object NoPackageDef extends (EnrichedTrees.this)#NotInstanceOf[nsc.Global.PackageDef]

    Permalink
  12. object PlainText

    Permalink
  13. object TemplateExtractor

    Permalink

    Provides a finer-grained extractor for Template that distinguishes between class constructor parameters, early definitions, parents, self type annotation and the real body.

  14. object ValOrDefDef

    Permalink

    Copy of scala.reflect.internal.Trees.ValOrDefDef of 2.11 to support 2.10.

  15. implicit def additionalTemplateMethods(t: nsc.Global.Template): (EnrichedTrees.this)#TemplateMethods

    Permalink
  16. implicit def additionalTreeMethodsForPositions(t: nsc.Global.Tree): (EnrichedTrees.this)#TreeMethodsForPositions

    Permalink
  17. def ancestorSymbols(t: nsc.Global.Tree): List[nsc.Global.Symbol]

    Permalink

    returns

    Returns the (symbol) ancestors of the tree excluding the ROOT in descending order. Also filters the symbols for package objects!

  18. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  19. def asSelectorString(t: nsc.Global.Tree): String

    Permalink

    Converts a tree containing Idents and Selects to a . separated string.

  20. def children: (nsc.Global.Tree) ⇒ List[nsc.Global.Tree]

    Permalink

    Returns all children that have a representation in the source code.

    Returns all children that have a representation in the source code. This includes Name and Modifier trees and excludes everything that has no Position or is an EmptyTree.

  21. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. def context[T](name: String)(body: ⇒ T): T

    Permalink
    Definition Classes
    SilentTracingTracing
    Annotations
    @inline()
  23. def endPositionAtEndOfSourceFile(pos: nsc.Global.Position, otherWise: Option[Int] = None): Int

    Permalink

    Trees that reach the end of the file don't seem to have the correct end position, except if there's a newline at the end.

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

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

    Permalink
    Definition Classes
    AnyRef → Any
  26. def escapeScalaKeywordsForImport(n: String): String

    Permalink
  27. def escapeScalaKeywordsForImport(n: nsc.Global.Name): String

    Permalink

    Takes a name and wraps it in if the name corresponds to a Scala keyword.

  28. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  29. val findAllTreesWithTheSamePosition: (nsc.Global.Tree) ⇒ Iterable[nsc.Global.Tree]

    Permalink
  30. def findOriginalTree: (nsc.Global.Tree) ⇒ Option[nsc.Global.Tree]

    Permalink

    Finds a tree by its position, can be used to find the original tree from a transformed tree.

    Finds a tree by its position, can be used to find the original tree from a transformed tree.

    If multiple trees are candidates, then take the last one, because it is likely more specific.

  31. def findSymbolForImportSelector(expr: nsc.Global.Tree, name: nsc.Global.Name): Option[nsc.Global.Symbol]

    Permalink

    Searches for a Symbol of a name in the type members of a tree.

    Searches for a Symbol of a name in the type members of a tree.

    This is mainly used for ImportSelectors, which don't carry any symbol information with them.

    expr

    The expr of an Import tree.

    name

    The name of an ImportSelector of the import.

  32. final def getClass(): Class[_]

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

    Permalink
    Definition Classes
    AnyRef → Any
  34. def isClassTag(c: nsc.Global.Constant): Boolean

    Permalink
  35. def isEmptyTree(t: nsc.Global.Tree): Boolean

    Permalink

    Returns whether the tree is considered empty.

    Returns whether the tree is considered empty.

    Prior to Scala 2.10.1 it was sufficient to check Tree#isEmpty, but now we also need to check if the tree is equal to emptyValDef.

  36. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  37. def keepTree(t: nsc.Global.Tree): Boolean

    Permalink
  38. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  39. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  40. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  41. val originalLeftSibling: (nsc.Global.Tree) ⇒ Option[nsc.Global.Tree]

    Permalink
  42. val originalParentOf: (nsc.Global.Tree) ⇒ Option[nsc.Global.Tree]

    Permalink
  43. val originalRightSibling: (nsc.Global.Tree) ⇒ Option[nsc.Global.Tree]

    Permalink
  44. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  45. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  46. def topPackageDef(t: nsc.Global.PackageDef): nsc.Global.PackageDef

    Permalink

    returns

    Returns the most specific package declaration in the compilation unit. For example, given the following declaration: package a package b class C it returns b. If there are further nested packages, they are ignored: package a class C package b returns a.

  47. def trace(msg: ⇒ String): Unit

    Permalink
    Definition Classes
    SilentTracingTracing
    Annotations
    @inline()
  48. def trace(msg: ⇒ String, arg1: ⇒ Any, args: Any*): Unit

    Permalink
    Definition Classes
    SilentTracingTracing
    Annotations
    @inline()
  49. final def wait(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

  1. object SourceLayouts

    Permalink
    Annotations
    @deprecated
    Deprecated

    (Since version 0.5.0) Use PlainText objects and its components

Inherited from SilentTracing

Inherited from Tracing

Inherited from AnyRef

Inherited from Any

Ungrouped