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: 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 isConstructorWithDefault(t: JavaUniverse.Tree): Boolean

    Definition Classes
    TreeInfo
  42. def isDeclarationOrTypeDef(tree: JavaUniverse.Tree): Boolean

    Is tree a declaration or type definition?

    Is tree a declaration or type definition?

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

    Definition Classes
    TreeInfo
  45. def isEarlyDef(tree: JavaUniverse.Tree): Boolean

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

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

    Is this case guarded?

    Is this case guarded?

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

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

    Is name a left-associative operator?

    Is name a left-associative operator?

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

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

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

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

    Is tree a pure (i.

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

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

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

    Is tree a super constructor call?

    Is tree a super constructor call?

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

    Definition Classes
    TreeInfo
  70. 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
  71. 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
  72. def isTraitRef(tree: JavaUniverse.Tree): Boolean

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

    Is tree a variable pattern?

    Is tree a variable pattern?

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

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

    can this type be a type pattern

    can this type be a type pattern

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

    Definition Classes
    AnyRef
  84. 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
  85. final def notify(): Unit

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

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

    Definition Classes
    AnyRef
  92. def toString(): String

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

    The underlying pattern ignoring any bindings

    The underlying pattern ignoring any bindings

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

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from TreeInfo

Inherited from AnyRef

Inherited from Any

Ungrouped