Packages

object treeInfo extends TreeInfo

Definition Classes
JavaUniverse → SymbolTable
Source
JavaUniverse.scala
Linear Supertypes
TreeInfo, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. treeInfo
  2. TreeInfo
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. class Applied extends AnyRef

    Applications in Scala can have one of the following shapes:

    Applications in Scala can have one of the following shapes:

    1) naked core: Ident(_) or Select(_, _) or basically anything else 2) naked core with targs: TypeApply(core, targs) or AppliedTypeTree(core, targs) 3) apply or several applies wrapping a core: Apply(core, _), or Apply(Apply(core, _), _), etc

    This class provides different ways to decompose applications and simplifies their analysis.

    ***Examples*** (TypeApply in the examples can be replaced with AppliedTypeTree)

    Ident(foo): * callee = Ident(foo) * core = Ident(foo) * targs = Nil * argss = Nil

    TypeApply(foo, List(targ1, targ2...)) * callee = TypeApply(foo, List(targ1, targ2...)) * core = foo * targs = List(targ1, targ2...) * argss = Nil

    Apply(foo, List(arg1, arg2...)) * callee = foo * core = foo * targs = Nil * argss = List(List(arg1, arg2...))

    Apply(Apply(foo, List(arg21, arg22, ...)), List(arg11, arg12...)) * callee = foo * core = foo * targs = Nil * argss = List(List(arg11, arg12...), List(arg21, arg22, ...))

    Apply(Apply(TypeApply(foo, List(targs1, targs2, ...)), List(arg21, arg22, ...)), List(arg11, arg12...)) * callee = TypeApply(foo, List(targs1, targs2, ...)) * core = foo * targs = Nil * argss = List(List(arg11, arg12...), List(arg21, arg22, ...))

    Definition Classes
    TreeInfo
  2. class DynamicApplicationExtractor extends AnyRef
    Definition Classes
    TreeInfo
  3. abstract class SeeThroughBlocks[T] extends AnyRef

    Some handy extractors for spotting trees through the the haze of irrelevant braces: i.e.

    Some handy extractors for spotting trees through the the haze of irrelevant braces: i.e. Block(Nil, SomeTree) should not keep us from seeing SomeTree.

    Definition Classes
    TreeInfo

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final val SYNTH_CASE_FLAGS: Int
    Definition Classes
    TreeInfo
  5. def admitsTypeSelection(tree: JavaUniverse.Tree): Boolean

    Is tree either a non-volatile type, or a path that does not include any of:

    Is tree either a non-volatile type, or a path that does not include any of:

    • a reference to a mutable variable/field
    • a reference to a by-name parameter
    • a member selection on a volatile type (Spec: 3.6 Volatile Types)?

    Such a tree is a suitable target for type selection.

    Definition Classes
    TreeInfo
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. def assignmentToMaybeNamedArg(tree: JavaUniverse.Tree): JavaUniverse.Tree

    Translates an Assign(_, _) node to AssignOrNamedArg(_, _) if the lhs is a simple ident.

    Translates an Assign(_, _) node to AssignOrNamedArg(_, _) if the lhs is a simple ident. Otherwise returns unchanged.

    Definition Classes
    TreeInfo
  8. def catchesThrowable(cdef: JavaUniverse.CaseDef): Boolean

    Does this CaseDef catch Throwable?

    Does this CaseDef catch Throwable?

    Definition Classes
    TreeInfo
  9. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  10. def dissectApplied(tree: JavaUniverse.Tree): Applied

    Returns a wrapper that knows how to destructure and analyze applications.

    Returns a wrapper that knows how to destructure and analyze applications.

    Definition Classes
    TreeInfo
  11. def effectivePatternArity(args: List[JavaUniverse.Tree]): Int

    //------------------------ => effectivePatternArity(args)
    case Extractor(a)          => 1
    case Extractor(a, b)       => 2
    case Extractor((a, b))     => 2
    case Extractor(a @ (b, c)) => 2
    Definition Classes
    TreeInfo
  12. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  14. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  15. def firstConstructor(stats: List[JavaUniverse.Tree]): JavaUniverse.Tree

    The first constructor definitions in stats

    The first constructor definitions in stats

    Definition Classes
    TreeInfo
  16. def firstConstructorArgs(stats: List[JavaUniverse.Tree]): List[JavaUniverse.Tree]

    The arguments to the first constructor in stats.

    The arguments to the first constructor in stats.

    Definition Classes
    TreeInfo
  17. def firstDefinesClassOrObject(trees: List[JavaUniverse.Tree], name: JavaUniverse.Name): Boolean

    Does list of trees start with a definition of a class of module with given name (ignoring imports)

    Does list of trees start with a definition of a class of module with given name (ignoring imports)

    Definition Classes
    TreeInfo
  18. def flattenedPatternArgs(args: List[JavaUniverse.Tree]): List[JavaUniverse.Tree]
    Definition Classes
    TreeInfo
  19. def foreachMethodParamAndArg(params: List[JavaUniverse.Symbol], args: List[JavaUniverse.Tree])(f: (JavaUniverse.Symbol, JavaUniverse.Tree) ⇒ Unit): Boolean
    Definition Classes
    TreeInfo
  20. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  21. val global: JavaUniverse.this.type
    Definition Classes
    treeInfo → TreeInfo
  22. def hasSynthCaseSymbol(t: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  23. def hasUntypedPreSuperFields(stats: List[JavaUniverse.Tree]): Boolean
    Definition Classes
    TreeInfo
  24. def hasVolatileType(tree: JavaUniverse.Tree): Boolean

    Is tree's type volatile? (Ignored if its symbol has the @uncheckedStable annotation.)

    Is tree's type volatile? (Ignored if its symbol has the @uncheckedStable annotation.)

    Definition Classes
    TreeInfo
  25. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  26. def isAbsTypeDef(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  27. def isAliasTypeDef(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  28. def isApplyDynamicName(name: JavaUniverse.Name): Boolean
    Definition Classes
    TreeInfo
  29. def isByNameParamType(tpt: JavaUniverse.Tree): Boolean

    Is tpt a by-name parameter type of the form => T?

    Is tpt a by-name parameter type of the form => T?

    Definition Classes
    TreeInfo
  30. def isCatchCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this pattern node a catch-all or type-test pattern?

    Is this pattern node a catch-all or type-test pattern?

    Definition Classes
    TreeInfo
  31. def isConstructorWithDefault(t: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  32. def isDeclarationOrTypeDef(tree: JavaUniverse.Tree): Boolean

    Is tree a declaration or type definition?

    Is tree a declaration or type definition?

    Definition Classes
    TreeInfo
  33. def isDefaultCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this pattern node a catch-all (wildcard or variable) pattern?

    Is this pattern node a catch-all (wildcard or variable) pattern?

    Definition Classes
    TreeInfo
  34. def isDefaultGetter(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  35. def isEarlyDef(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  36. def isEarlyValDef(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  37. def isExprSafeToInline(tree: JavaUniverse.Tree): Boolean

    Is tree an expression which can be inlined without affecting program semantics?

    Is tree an expression which can be inlined without affecting program semantics?

    Note that this is not called "isExprPure" since purity (lack of side-effects) is not the litmus test. References to modules and lazy vals are side-effecting, both because side-effecting code may be executed and because the first reference takes a different code path than all to follow; but they are safe to inline because the expression result from evaluating them is always the same.

    Definition Classes
    TreeInfo
  38. def isFunctionMissingParamType(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  39. def isGuardedCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this case guarded?

    Is this case guarded?

    Definition Classes
    TreeInfo
  40. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  41. def isInterfaceMember(tree: JavaUniverse.Tree): Boolean

    Is tree legal as a member definition of an interface?

    Is tree legal as a member definition of an interface?

    Definition Classes
    TreeInfo
  42. def isLeftAssoc(operator: JavaUniverse.Name): Boolean

    Is name a left-associative operator?

    Is name a left-associative operator?

    Definition Classes
    TreeInfo
  43. def isMacroApplication(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  44. def isMacroApplicationOrBlock(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  45. def isNullaryInvocation(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  46. def isPath(tree: JavaUniverse.Tree, allowVolatile: Boolean): Boolean

    Is tree a path, defined as follows? (Spec: 3.1 Paths)

    Is tree a path, defined as follows? (Spec: 3.1 Paths)

    - The empty path ε (which cannot be written explicitly in user programs). - C.this, where C references a class. - p.x where p is a path and x is a stable member of p. - C.super.x or C.super[M].x where C references a class and x references a stable member of the super class or designated parent class M of C.

    NOTE: Trees with errors are (mostly) excluded.

    Path ::= StableId | [id ‘.’] this

    Definition Classes
    TreeInfo
  47. def isPureDef(tree: JavaUniverse.Tree): Boolean

    Is tree a pure (i.e.

    Is tree a pure (i.e. non-side-effecting) definition?

    Definition Classes
    TreeInfo
  48. def isPureExprForWarningPurposes(tree: JavaUniverse.Tree): Boolean

    As if the name of the method didn't give it away, this logic is designed around issuing helpful warnings and minimizing spurious ones.

    As if the name of the method didn't give it away, this logic is designed around issuing helpful warnings and minimizing spurious ones. That means don't reuse it for important matters like inlining decisions.

    Definition Classes
    TreeInfo
  49. def isQualifierSafeToElide(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  50. def isRepeatedParamType(tpt: JavaUniverse.Tree): Boolean

    Is tpt a vararg type of the form T* ?

    Is tpt a vararg type of the form T* ?

    Definition Classes
    TreeInfo
  51. def isSelfConstrCall(tree: JavaUniverse.Tree): Boolean

    Is tree a self constructor call this(...)? I.e.

    Is tree a self constructor call this(...)? I.e. a call to a constructor of the same object?

    Definition Classes
    TreeInfo
  52. def isSelfOrSuperConstrCall(tree: JavaUniverse.Tree): Boolean

    Is tree a self or super constructor call?

    Is tree a self or super constructor call?

    Definition Classes
    TreeInfo
  53. def isSequenceValued(tree: JavaUniverse.Tree): Boolean

    Is this pattern node a sequence-valued pattern?

    Is this pattern node a sequence-valued pattern?

    Definition Classes
    TreeInfo
  54. def isStableIdentifier(tree: JavaUniverse.Tree, allowVolatile: Boolean): Boolean

    Is tree a stable identifier, a path which ends in an identifier?

    Is tree a stable identifier, a path which ends in an identifier?

    StableId ::= id | Path ‘.’ id | [id ’.’] ‘super’ [‘[’ id ‘]’] ‘.’ id

    Definition Classes
    TreeInfo
  55. def isStableIdentifierPattern(tree: JavaUniverse.Tree): Boolean

    Is tree admissible as a stable identifier pattern (8.1.5 Stable Identifier Patterns)?

    Is tree admissible as a stable identifier pattern (8.1.5 Stable Identifier Patterns)?

    We disregard volatility, as it's irrelevant in patterns (scala/bug#6815)

    Definition Classes
    TreeInfo
  56. def isStableMemberOf(sym: JavaUniverse.Symbol, tree: JavaUniverse.Tree, allowVolatile: Boolean): Boolean

    Assuming sym is a member of tree, is it a "stable member"?

    Assuming sym is a member of tree, is it a "stable member"?

    Stable members are packages or members introduced by object definitions or by value definitions of non-volatile types (§3.6).

    Definition Classes
    TreeInfo
  57. def isStar(x: JavaUniverse.Tree): Boolean

    Is this tree a Star(_) after removing bindings?

    Is this tree a Star(_) after removing bindings?

    Definition Classes
    TreeInfo
  58. def isSuperConstrCall(tree: JavaUniverse.Tree): Boolean

    Is tree a super constructor call?

    Is tree a super constructor call?

    Definition Classes
    TreeInfo
  59. def isSwitchAnnotation(tpe: JavaUniverse.Type): Boolean

    a Match(Typed(_, tpt), _) must be translated into a switch if isSwitchAnnotation(tpt.tpe)

    a Match(Typed(_, tpt), _) must be translated into a switch if isSwitchAnnotation(tpt.tpe)

    Definition Classes
    TreeInfo
  60. def isSynthCaseSymbol(sym: JavaUniverse.Symbol): Boolean
    Definition Classes
    TreeInfo
  61. def isSyntheticCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this CaseDef synthetically generated, e.g.

    Is this CaseDef synthetically generated, e.g. by MatchTranslation.translateTry?

    Definition Classes
    TreeInfo
  62. def isSyntheticDefaultCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this pattern node a synthetic catch-all case, added during PartialFunction synthesis before we know whether the user provided cases are exhaustive.

    Is this pattern node a synthetic catch-all case, added during PartialFunction synthesis before we know whether the user provided cases are exhaustive.

    Definition Classes
    TreeInfo
  63. def isTraitRef(tree: JavaUniverse.Tree): Boolean
    Definition Classes
    TreeInfo
  64. def isVarPattern(pat: JavaUniverse.Tree): Boolean

    Is tree a variable pattern?

    Is tree a variable pattern?

    Definition Classes
    TreeInfo
  65. def isVarPatternDeep(tree: JavaUniverse.Tree): Boolean

    Does this tree represent an irrefutable pattern match in the position for { <tree> <- expr } based only on information at the parser phase? To qualify, there may be no subtree that will be interpreted as a Stable Identifier Pattern, nor any type tests, even on TupleN.

    Does this tree represent an irrefutable pattern match in the position for { <tree> <- expr } based only on information at the parser phase? To qualify, there may be no subtree that will be interpreted as a Stable Identifier Pattern, nor any type tests, even on TupleN. See scala/bug#6968.

    For instance:

    (foo @ (bar @ _)) = 0

    is a not a variable pattern; if only binds names.

    The following are not variable patterns.

    `bar`
    Bar
    (a, b)
    _: T

    If the pattern is a simple identifier, it is always a variable pattern. For example, the following introduce new bindings:

    for { X <- xs } yield X
    for { `backquoted` <- xs } yield `backquoted`

    Note that this differs from a case clause:

    object X
    scrut match {
       case X =>  // case _ if scrut == X
    }

    Background: https://groups.google.com/d/msg/scala-internals/qwa_XOw_7Ks/IktkeTBYqg0J

    Definition Classes
    TreeInfo
  66. def isVariableOrGetter(tree: JavaUniverse.Tree): Boolean

    Is tree a mutable variable, or the getter of a mutable field?

    Is tree a mutable variable, or the getter of a mutable field?

    Definition Classes
    TreeInfo
  67. def isWildcardArg(tree: JavaUniverse.Tree): Boolean

    Is the argument a wildcard argument of the form _ or x @ _?

    Is the argument a wildcard argument of the form _ or x @ _?

    Definition Classes
    TreeInfo
  68. def isWildcardStarArg(tree: JavaUniverse.Tree): Boolean

    Is this argument node of the form <expr> : _* ?

    Is this argument node of the form <expr> : _* ?

    Definition Classes
    TreeInfo
  69. def isWildcardStarArgList(trees: List[JavaUniverse.Tree]): Boolean

    Does this argument list end with an argument of the form <expr> : _* ?

    Does this argument list end with an argument of the form <expr> : _* ?

    Definition Classes
    TreeInfo
  70. def isWildcardStarType(tree: JavaUniverse.Tree): Boolean

    Is the argument a wildcard star type of the form _*?

    Is the argument a wildcard star type of the form _*?

    Definition Classes
    TreeInfo
  71. def mapMethodParamsAndArgs[R](params: List[JavaUniverse.Symbol], args: List[JavaUniverse.Tree])(f: (JavaUniverse.Symbol, JavaUniverse.Tree) ⇒ R): List[R]
    Definition Classes
    TreeInfo
  72. def mayBeTypePat(tree: JavaUniverse.Tree): Boolean

    can this type be a type pattern

    can this type be a type pattern

    Definition Classes
    TreeInfo
  73. def mayBeVarGetter(sym: JavaUniverse.Symbol): Boolean

    Is symbol potentially a getter of a variable?

    Is symbol potentially a getter of a variable?

    Definition Classes
    TreeInfo
  74. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  75. def noFieldFor(vd: JavaUniverse.ValDef, owner: JavaUniverse.Symbol): Boolean
    Definition Classes
    TreeInfo
  76. def noPredefImportForUnit(body: JavaUniverse.Tree): Boolean

    Is this file the body of a compilation unit which should not have Predef imported?

    Is this file the body of a compilation unit which should not have Predef imported?

    Definition Classes
    TreeInfo
  77. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  78. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  79. def preSuperFields(stats: List[JavaUniverse.Tree]): List[JavaUniverse.ValDef]

    The value definitions marked PRESUPER in this statement sequence

    The value definitions marked PRESUPER in this statement sequence

    Definition Classes
    TreeInfo
  80. def stripCast(tree: JavaUniverse.Tree): JavaUniverse.Tree

    Strips layers of .asInstanceOf[T] / _.$asInstanceOf[T]() from an expression

    Strips layers of .asInstanceOf[T] / _.$asInstanceOf[T]() from an expression

    Definition Classes
    TreeInfo
  81. def stripNamedApplyBlock(tree: JavaUniverse.Tree): JavaUniverse.Tree

    Named arguments can transform a constructor call into a block, e.g.

    Named arguments can transform a constructor call into a block, e.g. <init>(b = foo, a = bar) is transformed to { val x$1 = foo val x$2 = bar <init>(x$2, x$1) }

    Definition Classes
    TreeInfo
  82. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  83. def toString(): String
    Definition Classes
    AnyRef → Any
  84. def typeParameters(tree: JavaUniverse.Tree): List[JavaUniverse.TypeDef]

    If this tree has type parameters, those.

    If this tree has type parameters, those. Otherwise Nil.

    Definition Classes
    TreeInfo
  85. def unbind(x: JavaUniverse.Tree): JavaUniverse.Tree

    The underlying pattern ignoring any bindings

    The underlying pattern ignoring any bindings

    Definition Classes
    TreeInfo
  86. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  87. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  88. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  89. object Applied

    Destructures applications into important subparts described in Applied class, namely into: core, targs and argss (in the specified order).

    Destructures applications into important subparts described in Applied class, namely into: core, targs and argss (in the specified order).

    Trees which are not applications are also accepted. Their callee and core will be equal to the input, while targs and argss will be Nil.

    The provided extractors don't expose all the API of the Applied class. For advanced use, call dissectApplied explicitly and use its methods instead of pattern matching.

    Definition Classes
    TreeInfo
  90. object DynamicApplication extends DynamicApplicationExtractor
    Definition Classes
    TreeInfo
  91. object DynamicApplicationNamed extends DynamicApplicationExtractor
    Definition Classes
    TreeInfo
  92. object DynamicUpdate extends DynamicApplicationExtractor
    Definition Classes
    TreeInfo
  93. object IsFalse extends SeeThroughBlocks[Boolean]
    Definition Classes
    TreeInfo
  94. object IsTrue extends SeeThroughBlocks[Boolean]
    Definition Classes
    TreeInfo
  95. object MacroImplReference
    Definition Classes
    TreeInfo
  96. object StripCast
    Definition Classes
    TreeInfo
  97. object Unapplied

    Locates the synthetic Apply node corresponding to an extractor's call to unapply (unwrapping nested Applies) and returns the fun part of that Apply.

    Locates the synthetic Apply node corresponding to an extractor's call to unapply (unwrapping nested Applies) and returns the fun part of that Apply.

    Definition Classes
    TreeInfo
  98. object WildcardStarArg
    Definition Classes
    TreeInfo

Inherited from TreeInfo

Inherited from AnyRef

Inherited from Any

Ungrouped