scala.reflect.runtime.JavaUniverse

# treeInfo

#### object treeInfo extends TreeInfo

Definition Classes
  JavaUniverse → SymbolTable

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

Learn more about member selection
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.

   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. #### 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

5. #### object DynamicApplication extends DynamicApplicationExtractor

   Definition Classes
     TreeInfo

6. #### object DynamicApplicationNamed extends DynamicApplicationExtractor

   Definition Classes
     TreeInfo

7. #### object DynamicUpdate extends DynamicApplicationExtractor

   Definition Classes
     TreeInfo

8. #### object IsFalse extends SeeThroughBlocks[Boolean]

   Definition Classes
     TreeInfo

9. #### object IsTrue extends SeeThroughBlocks[Boolean]

   Definition Classes
     TreeInfo

10. #### object MacroImplReference

    Definition Classes
      TreeInfo

11. #### final val SYNTH_CASE_FLAGS: Int

    Definition Classes
      TreeInfo

12. #### object StripCast

    Definition Classes
      TreeInfo

13. #### 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

14. #### object WildcardStarArg

    Definition Classes
      TreeInfo

15. #### 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

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

    Definition Classes
      Any

17. #### 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

18. #### def catchesThrowable(cdef: JavaUniverse.CaseDef): Boolean

    Does this CaseDef catch Throwable?

    Does this CaseDef catch Throwable?

    Definition Classes
      TreeInfo

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

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

20. #### 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

21. #### 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

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

    Definition Classes
      AnyRef

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

    Definition Classes
      AnyRef → Any

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

    Attributes
      protected[java.lang]
    Definition Classes
      AnyRef
    Annotations
      @throws( classOf[java.lang.Throwable] )

25. #### def firstConstructor(stats: List[JavaUniverse.Tree]): JavaUniverse.Tree

    The first constructor definitions in `stats`

    The first constructor definitions in `stats`

    Definition Classes
      TreeInfo

26. #### 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

27. #### 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

28. #### def flattenedPatternArgs(args: List[JavaUniverse.Tree]): List[JavaUniverse.Tree]

    Definition Classes
      TreeInfo

29. #### def foreachMethodParamAndArg(params: List[JavaUniverse.Symbol], args: List[JavaUniverse.Tree])(f: (JavaUniverse.Symbol, JavaUniverse.Tree) ⇒ Unit): Boolean

    Definition Classes
      TreeInfo

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

    Definition Classes
      AnyRef → Any

31. #### val global: JavaUniverse.this.type

    Definition Classes
      treeInfo → TreeInfo

32. #### def hasSynthCaseSymbol(t: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

33. #### def hasUntypedPreSuperFields(stats: List[JavaUniverse.Tree]): Boolean

    Definition Classes
      TreeInfo

34. #### 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

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

    Definition Classes
      AnyRef → Any

36. #### def isAbsTypeDef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

37. #### def isAliasTypeDef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

38. #### def isApplyDynamicName(name: JavaUniverse.Name): Boolean

    Definition Classes
      TreeInfo

39. #### 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

40. #### 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

41. #### def isDeclarationOrTypeDef(tree: JavaUniverse.Tree): Boolean

    Is tree a declaration or type definition?

    Is tree a declaration or type definition?

    Definition Classes
      TreeInfo

42. #### 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

43. #### def isDefaultGetter(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

44. #### def isEarlyDef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

45. #### def isEarlyValDef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

46. #### 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

47. #### def isGuardedCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this case guarded?

    Is this case guarded?

    Definition Classes
      TreeInfo

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

    Definition Classes
      Any

49. #### 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

50. #### def isLeftAssoc(operator: JavaUniverse.Name): Boolean

    Is name a left-associative operator?

    Is name a left-associative operator?

    Definition Classes
      TreeInfo

51. #### def isMacroApplication(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

52. #### def isMacroApplicationOrBlock(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

53. #### def isNullaryInvocation(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

54. #### def isPath(tree: JavaUniverse.Tree, allowVolatile: Boolean): Boolean

    Is `tree` a path, defined as follows? (Spec: 3.

    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

55. #### def isPureDef(tree: JavaUniverse.Tree): Boolean

    Is tree a pure (i.

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

    Definition Classes
      TreeInfo

56. #### 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

57. #### def isQualifierSafeToElide(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

58. #### 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

59. #### def isSelfConstrCall(tree: JavaUniverse.Tree): Boolean

    Is tree a self constructor call this(.

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

    Definition Classes
      TreeInfo

60. #### 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

61. #### 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

62. #### 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

63. #### def isStableIdentifierPattern(tree: JavaUniverse.Tree): Boolean

    Is `tree` admissible as a stable identifier pattern (8.

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

    We disregard volatility, as it's irrelevant in patterns (SI-6815)

    Definition Classes
      TreeInfo

64. #### 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

65. #### 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

66. #### def isSuperConstrCall(tree: JavaUniverse.Tree): Boolean

    Is tree a super constructor call?

    Is tree a super constructor call?

    Definition Classes
      TreeInfo

67. #### def isSwitchAnnotation(tpe: JavaUniverse.Type): Boolean

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

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

    Definition Classes
      TreeInfo

68. #### def isSynthCaseSymbol(sym: JavaUniverse.Symbol): Boolean

    Definition Classes
      TreeInfo

69. #### def isSyntheticCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this CaseDef synthetically generated, e.

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

    Definition Classes
      TreeInfo

70. #### def isSyntheticDefaultCase(cdef: JavaUniverse.CaseDef): Boolean

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

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

    Definition Classes
      TreeInfo

71. #### def isTraitRef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
      TreeInfo

72. #### def isVarPattern(pat: JavaUniverse.Tree): Boolean

    Is tree a variable pattern?

    Is tree a variable pattern?

    Definition Classes
      TreeInfo

73. #### 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 SI-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

74. #### 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

75. #### 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

76. #### 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

77. #### 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

78. #### 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

79. #### def mapMethodParamsAndArgs[R](params: List[JavaUniverse.Symbol], args: List[JavaUniverse.Tree])(f: (JavaUniverse.Symbol, JavaUniverse.Tree) ⇒ R): List[R]

    Definition Classes
      TreeInfo

80. #### def mayBeTypePat(tree: JavaUniverse.Tree): Boolean

    can this type be a type pattern

    can this type be a type pattern

    Definition Classes
      TreeInfo

81. #### 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

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

    Definition Classes
      AnyRef

83. #### 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

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

    Definition Classes
      AnyRef

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

    Definition Classes
      AnyRef

86. #### 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

87. #### def repeatedParams(tree: JavaUniverse.Tree): List[JavaUniverse.ValDef]

    The parameter ValDefs of a method definition that have vararg types of the form T*

    The parameter ValDefs of a method definition that have vararg types of the form T*

    Definition Classes
      TreeInfo

88. #### 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

89. #### def stripNamedApplyBlock(tree: JavaUniverse.Tree): JavaUniverse.Tree

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

    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

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

    Definition Classes
      AnyRef

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

    Definition Classes
      AnyRef → Any

92. #### 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

93. #### def unbind(x: JavaUniverse.Tree): JavaUniverse.Tree

    The underlying pattern ignoring any bindings

    The underlying pattern ignoring any bindings

    Definition Classes
      TreeInfo

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

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

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

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

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

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

### Inherited from TreeInfo

### Inherited from AnyRef

### Inherited from Any

### Ungrouped