object Trees

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Trees
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. sealed abstract class AnyFieldDef extends MemberDef
  2. sealed case class Apply(flags: ApplyFlags, receiver: Tree, method: MethodIdent, args: List[Tree])(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable

    Apply an instance method with dynamic dispatch (the default).

  3. final class ApplyFlags extends AnyVal
  4. sealed case class ApplyStatic(flags: ApplyFlags, className: ClassName, method: MethodIdent, args: List[Tree])(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable

    Apply a static method.

  5. sealed case class ApplyStatically(flags: ApplyFlags, receiver: Tree, className: ClassName, method: MethodIdent, args: List[Tree])(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable

    Apply an instance method with static dispatch (e.g., super calls).

  6. sealed case class ArrayLength(array: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  7. sealed case class ArraySelect(array: Tree, index: Tree)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  8. sealed case class ArrayValue(typeRef: ArrayTypeRef, elems: List[Tree])(implicit pos: Position) extends Tree with Product with Serializable
  9. sealed case class AsInstanceOf(expr: Tree, tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  10. sealed case class Assign(lhs: Tree, rhs: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  11. sealed case class BinaryOp(op: Code, lhs: Tree, rhs: Tree)(implicit pos: Position) extends Tree with Product with Serializable

    Binary operation (always preserves pureness).

  12. sealed class Block extends Tree
  13. sealed case class BooleanLiteral(value: Boolean)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  14. sealed case class ByteLiteral(value: Byte)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  15. sealed case class CharLiteral(value: Char)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  16. final class ClassDef extends IRNode
  17. sealed case class ClassIdent(name: ClassName)(implicit pos: Position) extends IRNode with Product with Serializable
  18. sealed case class ClassOf(typeRef: TypeRef)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  19. sealed case class Closure(arrow: Boolean, captureParams: List[ParamDef], params: List[ParamDef], body: Tree, captureValues: List[Tree])(implicit pos: Position) extends Tree with Product with Serializable

    Closure with explicit captures.

    Closure with explicit captures.

    arrow

    If true, the closure is an Arrow Function (=>), which does not have an this parameter, and cannot be constructed (called with new). If false, it is a regular Function (function).

  20. sealed case class CreateJSClass(className: ClassName, captureValues: List[Tree])(implicit pos: Position) extends Tree with Product with Serializable

    Creates a JavaScript class value.

    Creates a JavaScript class value.

    className

    Reference to the ClassDef for the class definition, which must have jsClassCaptures.nonEmpty

    captureValues

    Actual values for the captured parameters (in the ClassDef's jsClassCaptures.get)

  21. sealed case class Debugger()(implicit pos: Position) extends Tree with Product with Serializable
  22. sealed case class DoWhile(body: Tree, cond: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  23. sealed case class DoubleLiteral(value: Double)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  24. sealed case class FieldDef(flags: MemberFlags, name: FieldIdent, originalName: OriginalName, ftpe: Type)(implicit pos: Position) extends AnyFieldDef with Product with Serializable
  25. sealed case class FieldIdent(name: FieldName)(implicit pos: Position) extends IRNode with Product with Serializable
  26. sealed case class FloatLiteral(value: Float)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  27. sealed case class ForIn(obj: Tree, keyVar: LocalIdent, keyVarOriginalName: OriginalName, body: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  28. sealed case class GetClass(expr: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  29. sealed abstract class IRNode extends AnyRef

    Base class for all nodes in the IR.

    Base class for all nodes in the IR.

    Usually, one of the direct subclasses of IRNode should be used instead.

  30. sealed case class If(cond: Tree, thenp: Tree, elsep: Tree)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  31. sealed case class IntLiteral(value: Int)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  32. sealed case class IsInstanceOf(expr: Tree, testType: Type)(implicit pos: Position) extends Tree with Product with Serializable
  33. sealed case class JSArrayConstr(items: List[TreeOrJSSpread])(implicit pos: Position) extends Tree with Product with Serializable
  34. sealed case class JSBinaryOp(op: Code, lhs: Tree, rhs: Tree)(implicit pos: Position) extends Tree with Product with Serializable

    Binary operation (always preserves pureness).

    Binary operation (always preserves pureness).

    Operations which do not preserve pureness are not allowed in this tree. These are notably +=, -=, *=, /= and %=

  35. sealed case class JSDelete(qualifier: Tree, item: Tree)(implicit pos: Position) extends Tree with Product with Serializable

    delete qualifier[item]

  36. sealed case class JSFieldDef(flags: MemberFlags, name: Tree, ftpe: Type)(implicit pos: Position) extends AnyFieldDef with Product with Serializable
  37. sealed case class JSFunctionApply(fun: Tree, args: List[TreeOrJSSpread])(implicit pos: Position) extends Tree with Product with Serializable
  38. sealed case class JSGlobalRef(name: String)(implicit pos: Position) extends Tree with Product with Serializable
  39. sealed case class JSImportCall(arg: Tree)(implicit pos: Position) extends Tree with Product with Serializable

    JavaScript dynamic import of the form import(arg).

    JavaScript dynamic import of the form import(arg).

    This form is its own node, rather than using something like

    JSFunctionApply(JSImport())

    because import is not a first-class term in JavaScript. ImportCall is a dedicated syntactic form that cannot be dissociated.

  40. sealed case class JSLinkingInfo()(implicit pos: Position) extends Tree with Product with Serializable
  41. sealed case class JSMethodApply(receiver: Tree, method: Tree, args: List[TreeOrJSSpread])(implicit pos: Position) extends Tree with Product with Serializable
  42. sealed case class JSMethodDef(flags: MemberFlags, name: Tree, args: List[ParamDef], body: Tree)(optimizerHints: OptimizerHints, hash: Option[TreeHash])(implicit pos: Position) extends JSMethodPropDef with Product with Serializable
  43. sealed abstract class JSMethodPropDef extends MemberDef
  44. sealed abstract class JSNativeLoadSpec extends AnyRef

    Loading specification for a native JS class or object.

  45. sealed case class JSNew(ctor: Tree, args: List[TreeOrJSSpread])(implicit pos: Position) extends Tree with Product with Serializable
  46. sealed case class JSObjectConstr(fields: List[(Tree, Tree)])(implicit pos: Position) extends Tree with Product with Serializable
  47. sealed case class JSPrivateSelect(qualifier: Tree, className: ClassName, field: FieldIdent)(implicit pos: Position) extends Tree with Product with Serializable
  48. sealed case class JSPropertyDef(flags: MemberFlags, name: Tree, getterBody: Option[Tree], setterArgAndBody: Option[(ParamDef, Tree)])(implicit pos: Position) extends JSMethodPropDef with Product with Serializable
  49. sealed case class JSSelect(qualifier: Tree, item: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  50. sealed case class JSSpread(items: Tree)(implicit pos: Position) extends IRNode with TreeOrJSSpread with Product with Serializable

    ...items, the "spread" operator of ECMAScript 6.

    ...items, the "spread" operator of ECMAScript 6.

    items

    An Array whose items will be spread (not an arbitrary iterable)

  51. sealed case class JSSuperConstructorCall(args: List[TreeOrJSSpread])(implicit pos: Position) extends Tree with Product with Serializable

    Super constructor call in the constructor of a non-native JS class.

    Super constructor call in the constructor of a non-native JS class.

    Exactly one such node must appear in the constructor of a non-native JS class, at the top-level (possibly as a direct child of a top-level Block). Any other use of this node is invalid.

    Statements before this node, as well as the args, cannot contain any This() node. Statements after this node can use This().

    After the execution of this node, it is guaranteed that all fields declared in the current class have been created and initialized. Up to that point, accessing any field declared in this class (e.g., through an overridden method called from the super constructor) is undefined behavior.

    All in all, the shape of a constructor is therefore:

    {
      statementsNotUsingThis();
      JSSuperConstructorCall(...argsNotUsingThis);
      statementsThatMayUseThis()
    }

    which currently translates to something of the following shape:

    {
      statementsNotUsingThis();
      super(...argsNotUsingThis);
      this.privateField1 = 0;
      this["publicField2"] = false;
      statementsThatMayUseThis()
    }
  52. sealed case class JSSuperMethodCall(superClass: Tree, receiver: Tree, method: Tree, args: List[TreeOrJSSpread])(implicit pos: Position) extends Tree with Product with Serializable

    Calls a method inherited from the given superClass on receiver.

    Calls a method inherited from the given superClass on receiver.

    Intuitively, this corresponds to

    superClass.prototype[method].call(receiver, ...args)

    but retains more structure at the IR level than using an explicit encoding of the above expression.

    Given the non-native JS classes

    class Bar extends js.Object
    class Foo extends Bar

    The node

    JSSuperBrackerCall(LoadJSConstructor(ClassName("Bar")), receiver, method, args)

    which is printed as

    super(constructorOf[Bar])::receiver[method](...args)

    has the following semantics:

    Bar.prototype[method].call(receiver, ...args)

    If this happens to be located in an instance method of Foo, *and* receiver happens to be This(), this is equivalent to the ES6 statement

    super[method](...args)
  53. sealed case class JSSuperSelect(superClass: Tree, receiver: Tree, item: Tree)(implicit pos: Position) extends Tree with Product with Serializable

    Selects a property inherited from the given superClass on receiver.

    Selects a property inherited from the given superClass on receiver.

    Given the non-native JS classes

    class Bar extends js.Object
    class Foo extends Bar

    The node

    JSSuperBrackerSelect(LoadJSConstructor(ClassName("Bar")), qualifier, item)

    which is printed as

    super(constructorOf[Bar])::qualifier[item]

    has the semantics of an ES6 super reference

    super[item]

    as if it were in an instance method of Foo with qualifier as the this value.

  54. sealed case class JSTypeOfGlobalRef(globalRef: JSGlobalRef)(implicit pos: Position) extends Tree with Product with Serializable
  55. sealed case class JSUnaryOp(op: Code, lhs: Tree)(implicit pos: Position) extends Tree with Product with Serializable

    Unary operation (always preserves pureness).

    Unary operation (always preserves pureness).

    Operations which do not preserve pureness are not allowed in this tree. These are notably ++ and --

  56. sealed case class LabelIdent(name: LabelName)(implicit pos: Position) extends IRNode with Product with Serializable
  57. sealed case class Labeled(label: LabelIdent, tpe: Type, body: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  58. sealed trait Literal extends Tree

    Marker for literals.

    Marker for literals. Literals are always pure.

  59. sealed case class LoadJSConstructor(className: ClassName)(implicit pos: Position) extends Tree with Product with Serializable

    Loads the constructor of a JS class (native or not).

    Loads the constructor of a JS class (native or not).

    className must represent a non-trait JS class (native or not).

    This is used typically to instantiate a JS class, and most importantly if it is a non-native JS class. Given the class

    class Foo(x: Int) extends js.Object

    The instantiation new Foo(1) would be represented as

    JSNew(LoadJSConstructor(ClassName("Foo")), List(IntLiteral(1)))

    This node is also useful to encode o.isInstanceOf[Foo]:

    JSBinaryOp(instanceof, o, LoadJSConstructor(ClassName("Foo")))

    If Foo is non-native, the presence of this node makes it instantiable, and therefore reachable.

  60. sealed case class LoadJSModule(className: ClassName)(implicit pos: Position) extends Tree with Product with Serializable

    Like LoadModule but for a JS module class.

  61. sealed case class LoadModule(className: ClassName)(implicit pos: Position) extends Tree with Product with Serializable
  62. sealed case class LocalIdent(name: LocalName)(implicit pos: Position) extends IRNode with Product with Serializable
  63. sealed case class LongLiteral(value: Long)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  64. sealed case class Match(selector: Tree, cases: List[(List[IntLiteral], Tree)], default: Tree)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable

    A break-free switch (without fallthrough behavior).

    A break-free switch (without fallthrough behavior). Unlike a JavaScript switch, it can be used in expression position. It supports alternatives explicitly (hence the List[IntLiteral] in cases), whereas in a switch one would use the fallthrough behavior to implement alternatives. (This is not a pattern matching construct like in Scala.)

  65. sealed abstract class MemberDef extends IRNode

    Any member of a ClassDef.

    Any member of a ClassDef.

    Partitioned into AnyFieldDef, MethodDef and JSMethodPropDef.

  66. final class MemberFlags extends AnyVal
  67. final class MemberNamespace extends AnyVal
  68. sealed case class MethodDef(flags: MemberFlags, name: MethodIdent, originalName: OriginalName, args: List[ParamDef], resultType: Type, body: Option[Tree])(optimizerHints: OptimizerHints, hash: Option[TreeHash])(implicit pos: Position) extends MemberDef with Product with Serializable
  69. sealed case class MethodIdent(name: MethodName)(implicit pos: Position) extends IRNode with Product with Serializable
  70. sealed case class New(className: ClassName, ctor: MethodIdent, args: List[Tree])(implicit pos: Position) extends Tree with Product with Serializable
  71. sealed case class NewArray(typeRef: ArrayTypeRef, lengths: List[Tree])(implicit pos: Position) extends Tree with Product with Serializable
  72. sealed case class Null()(implicit pos: Position) extends Tree with Literal with Product with Serializable
  73. final class OptimizerHints extends AnyVal
  74. sealed case class ParamDef(name: LocalIdent, originalName: OriginalName, ptpe: Type, mutable: Boolean, rest: Boolean)(implicit pos: Position) extends IRNode with Product with Serializable
  75. sealed case class RecordSelect(record: Tree, field: FieldIdent)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  76. sealed case class RecordValue(tpe: RecordType, elems: List[Tree])(implicit pos: Position) extends Tree with Product with Serializable
  77. sealed case class Return(expr: Tree, label: LabelIdent)(implicit pos: Position) extends Tree with Product with Serializable
  78. sealed case class Select(qualifier: Tree, className: ClassName, field: FieldIdent)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  79. sealed case class SelectStatic(className: ClassName, field: FieldIdent)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  80. sealed case class ShortLiteral(value: Short)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  81. sealed case class Skip()(implicit pos: Position) extends Tree with Product with Serializable
  82. sealed case class StoreModule(className: ClassName, value: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  83. sealed case class StringLiteral(value: String)(implicit pos: Position) extends Tree with Literal with Product with Serializable
  84. sealed case class This()(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  85. sealed case class Throw(expr: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  86. sealed abstract class TopLevelExportDef extends IRNode
  87. sealed case class TopLevelFieldExportDef(exportName: String, field: FieldIdent)(implicit pos: Position) extends TopLevelExportDef with Product with Serializable
  88. sealed case class TopLevelJSClassExportDef(exportName: String)(implicit pos: Position) extends TopLevelExportDef with Product with Serializable
  89. sealed case class TopLevelMethodExportDef(methodDef: JSMethodDef)(implicit pos: Position) extends TopLevelExportDef with Product with Serializable
  90. sealed case class TopLevelModuleExportDef(exportName: String)(implicit pos: Position) extends TopLevelExportDef with Product with Serializable

    Export for a top-level object.

    Export for a top-level object.

    This exports the singleton instance of the containing module class. The instance is initialized during ES module instantiation.

  91. sealed case class Transient(value: Value)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable

    A transient node for custom purposes.

    A transient node for custom purposes.

    A transient node is never a valid input to the Serializers nor to the linker, but can be used in a transient state for internal purposes.

    value

    The payload of the transient node, without any specified meaning.

  92. sealed abstract class Tree extends IRNode with TreeOrJSSpread

    Node for a statement or expression in the IR.

  93. final class TreeHash extends AnyRef

    A hash of a tree (usually a MethodDef).

    A hash of a tree (usually a MethodDef).

    Contains a SHA-1 hash.

  94. sealed trait TreeOrJSSpread extends IRNode

    Either a Tree or a JSSpread.

    Either a Tree or a JSSpread.

    This is the type of actual arguments to JS applications.

  95. sealed case class TryCatch(block: Tree, errVar: LocalIdent, errVarOriginalName: OriginalName, handler: Tree)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  96. sealed case class TryFinally(block: Tree, finalizer: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  97. sealed case class UnaryOp(op: Code, lhs: Tree)(implicit pos: Position) extends Tree with Product with Serializable

    Unary operation (always preserves pureness).

  98. sealed case class Undefined()(implicit pos: Position) extends Tree with Literal with Product with Serializable
  99. sealed case class VarDef(name: LocalIdent, originalName: OriginalName, vtpe: Type, mutable: Boolean, rhs: Tree)(implicit pos: Position) extends Tree with Product with Serializable
  100. sealed case class VarRef(ident: LocalIdent)(tpe: Type)(implicit pos: Position) extends Tree with Product with Serializable
  101. sealed case class While(cond: Tree, body: Tree)(implicit pos: Position) extends Tree with Product with Serializable

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 def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def isJSIdentifierName(name: String): Boolean

    Tests whether the given name is a valid JavaScript identifier name.

    Tests whether the given name is a valid JavaScript identifier name.

    This test does *not* exclude keywords.

  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  17. def toString(): String
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  21. object ApplyFlags
  22. object BinaryOp extends Serializable
  23. object Block
  24. object ClassDef
  25. object JSBinaryOp extends Serializable
  26. object JSGlobalRef extends Serializable
  27. object JSNativeLoadSpec
  28. object JSUnaryOp extends Serializable
  29. object MemberFlags
  30. object MemberNamespace
  31. object OptimizerHints
  32. object TopLevelExportDef
  33. object Transient extends Serializable
  34. object UnaryOp extends Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped