scala.reflect.runtime.JavaUniverse

treeInfo

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
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: 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 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
  7. object DynamicApplication extends DynamicApplicationExtractor

    Definition Classes
    TreeInfo
  8. object DynamicApplicationNamed extends DynamicApplicationExtractor

    Definition Classes
    TreeInfo
  9. object DynamicUpdate extends DynamicApplicationExtractor

    Definition Classes
    TreeInfo
  10. object IsFalse extends SeeThroughBlocks[Boolean]

    Definition Classes
    TreeInfo
  11. object IsIf extends SeeThroughBlocks[Option[(internal.SymbolTable.Tree, internal.SymbolTable.Tree, internal.SymbolTable.Tree)]]

    Definition Classes
    TreeInfo
  12. object IsTrue extends SeeThroughBlocks[Boolean]

    Definition Classes
    TreeInfo
  13. object MacroImplReference

    Definition Classes
    TreeInfo
  14. final val SYNTH_CASE_FLAGS: Int

    Definition Classes
    TreeInfo
  15. object StripCast

    Definition Classes
    TreeInfo
  16. 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
  17. object WildcardStarArg

    Definition Classes
    TreeInfo
  18. 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
  19. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  20. def assignedNameOfPattern(cdef: JavaUniverse.CaseDef): JavaUniverse.Name

    If this CaseDef assigns a name to its top-level pattern, in the form 'expr @ pattern' or 'expr: pattern', returns the name.

    If this CaseDef assigns a name to its top-level pattern, in the form 'expr @ pattern' or 'expr: pattern', returns the name. Otherwise, nme.NO_NAME.

    Note: in the case of Constant patterns such as 'case x @ "" =>', the pattern matcher eliminates the binding and inlines the constant, so as far as this method is likely to be able to determine, the name is NO_NAME.

    Definition Classes
    TreeInfo
  21. 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
  22. def catchesThrowable(cdef: JavaUniverse.CaseDef): Boolean

    Does this CaseDef catch Throwable?

    Does this CaseDef catch Throwable?

    Definition Classes
    TreeInfo
  23. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. 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
  25. 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
  26. final def eq(arg0: AnyRef): Boolean

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

    Definition Classes
    AnyRef → Any
  28. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  29. def firstConstructor(stats: List[JavaUniverse.Tree]): JavaUniverse.Tree

    The first constructor definitions in stats

    The first constructor definitions in stats

    Definition Classes
    TreeInfo
  30. 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
  31. def flattenedPatternArgs(args: List[JavaUniverse.Tree]): List[JavaUniverse.Tree]

    Definition Classes
    TreeInfo
  32. def foreachMethodParamAndArg(params: List[JavaUniverse.Symbol], args: List[JavaUniverse.Tree])(f: (JavaUniverse.Symbol, JavaUniverse.Tree) ⇒ Unit): Boolean

    Definition Classes
    TreeInfo
  33. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  34. val global: JavaUniverse.this.type

    Definition Classes
    treeInfo → TreeInfo
  35. def hasSynthCaseSymbol(t: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  36. def hasUntypedPreSuperFields(stats: List[JavaUniverse.Tree]): Boolean

    Definition Classes
    TreeInfo
  37. 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
  38. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  39. def isAbsTypeDef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  40. def isAliasTypeDef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  41. def isApplyDynamicName(name: JavaUniverse.Name): Boolean

    Definition Classes
    TreeInfo
  42. 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
  43. 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
  44. def isDeclarationOrTypeDef(tree: JavaUniverse.Tree): Boolean

    Is tree a declaration or type definition?

    Is tree a declaration or type definition?

    Definition Classes
    TreeInfo
  45. 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
  46. def isEarlyDef(tree: JavaUniverse.Tree): Boolean

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

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

    Definition Classes
    TreeInfo
  49. 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
  50. def isGuardedCase(cdef: JavaUniverse.CaseDef): Boolean

    Is this case guarded?

    Is this case guarded?

    Definition Classes
    TreeInfo
  51. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  52. 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
  53. def isLeftAssoc(operator: JavaUniverse.Name): Boolean

    Is name a left-associative operator?

    Is name a left-associative operator?

    Definition Classes
    TreeInfo
  54. def isMacroApplication(tree: JavaUniverse.Tree): Boolean

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

    Definition Classes
    TreeInfo
  56. def isNonTrivialMacroApplication(tree: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  57. def isNullaryInvocation(tree: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  58. 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
  59. def isPureDef(tree: JavaUniverse.Tree): Boolean

    Is tree a pure (i.

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

    Definition Classes
    TreeInfo
  60. 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
  61. def isQualifierSafeToElide(tree: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. def isSuperConstrCall(tree: JavaUniverse.Tree): Boolean

    Is tree a super constructor call?

    Is tree a super constructor call?

    Definition Classes
    TreeInfo
  71. 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
  72. def isSynthCaseSymbol(sym: JavaUniverse.Symbol): Boolean

    Definition Classes
    TreeInfo
  73. 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
  74. 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
  75. def isTraitRef(tree: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  76. def isVarPattern(pat: JavaUniverse.Tree): Boolean

    Is tree a variable pattern?

    Is tree a variable pattern?

    Definition Classes
    TreeInfo
  77. 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
  78. 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
  79. 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
  80. 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
  81. 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
  82. 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
  83. def mapMethodParamsAndArgs[R](params: List[JavaUniverse.Symbol], args: List[JavaUniverse.Tree])(f: (JavaUniverse.Symbol, JavaUniverse.Tree) ⇒ R): List[R]

    Definition Classes
    TreeInfo
  84. def mayBeTypePat(tree: JavaUniverse.Tree): Boolean

    can this type be a type pattern

    can this type be a type pattern

    Definition Classes
    TreeInfo
  85. 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
  86. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  87. def noPredefImportForUnit(body: JavaUniverse.Tree): Boolean

    Is this file the body of a compilation unit which should not have Predef imported? This is the case iff the first import in the unit explicitly refers to Predef.

    Is this file the body of a compilation unit which should not have Predef imported? This is the case iff the first import in the unit explicitly refers to Predef.

    Definition Classes
    TreeInfo
  88. final def notify(): Unit

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

    Definition Classes
    AnyRef
  90. 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
  91. 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
  92. 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
  93. 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
  94. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  95. def toString(): String

    Definition Classes
    AnyRef → Any
  96. 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
  97. def unbind(x: JavaUniverse.Tree): JavaUniverse.Tree

    The underlying pattern ignoring any bindings

    The underlying pattern ignoring any bindings

    Definition Classes
    TreeInfo
  98. final def wait(): Unit

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from TreeInfo

Inherited from AnyRef

Inherited from Any

Ungrouped