Class Node

java.lang.Object
com.google.javascript.rhino.Node

public class Node extends Object
This class implements the root of the intermediate representation.
  • Field Details

    • INCRDECR_PROP

      public static final com.google.javascript.rhino.Node.Prop INCRDECR_PROP
    • QUOTED_PROP

      public static final com.google.javascript.rhino.Node.Prop QUOTED_PROP
    • IS_CONSTANT_NAME

      public static final com.google.javascript.rhino.Node.Prop IS_CONSTANT_NAME
    • IS_NAMESPACE

      public static final com.google.javascript.rhino.Node.Prop IS_NAMESPACE
    • DIRECT_EVAL

      public static final com.google.javascript.rhino.Node.Prop DIRECT_EVAL
    • FREE_CALL

      public static final com.google.javascript.rhino.Node.Prop FREE_CALL
    • REFLECTED_OBJECT

      public static final com.google.javascript.rhino.Node.Prop REFLECTED_OBJECT
    • STATIC_MEMBER

      public static final com.google.javascript.rhino.Node.Prop STATIC_MEMBER
    • GENERATOR_FN

      public static final com.google.javascript.rhino.Node.Prop GENERATOR_FN
    • YIELD_ALL

      public static final com.google.javascript.rhino.Node.Prop YIELD_ALL
    • EXPORT_DEFAULT

      public static final com.google.javascript.rhino.Node.Prop EXPORT_DEFAULT
    • EXPORT_ALL_FROM

      public static final com.google.javascript.rhino.Node.Prop EXPORT_ALL_FROM
    • COMPUTED_PROP_METHOD

      public static final com.google.javascript.rhino.Node.Prop COMPUTED_PROP_METHOD
    • COMPUTED_PROP_GETTER

      public static final com.google.javascript.rhino.Node.Prop COMPUTED_PROP_GETTER
    • COMPUTED_PROP_SETTER

      public static final com.google.javascript.rhino.Node.Prop COMPUTED_PROP_SETTER
    • COMPUTED_PROP_VARIABLE

      public static final com.google.javascript.rhino.Node.Prop COMPUTED_PROP_VARIABLE
    • OPT_ES6_TYPED

      public static final com.google.javascript.rhino.Node.Prop OPT_ES6_TYPED
    • GENERIC_TYPE_LIST

      public static final com.google.javascript.rhino.Node.Prop GENERIC_TYPE_LIST
    • IMPLEMENTS

      public static final com.google.javascript.rhino.Node.Prop IMPLEMENTS
    • CONSTRUCT_SIGNATURE

      public static final com.google.javascript.rhino.Node.Prop CONSTRUCT_SIGNATURE
    • ACCESS_MODIFIER

      public static final com.google.javascript.rhino.Node.Prop ACCESS_MODIFIER
    • GOOG_MODULE

      public static final com.google.javascript.rhino.Node.Prop GOOG_MODULE
    • FEATURE_SET

      public static final com.google.javascript.rhino.Node.Prop FEATURE_SET
    • IS_TYPESCRIPT_ABSTRACT

      public static final com.google.javascript.rhino.Node.Prop IS_TYPESCRIPT_ABSTRACT
    • MODULE_ALIAS

      public static final com.google.javascript.rhino.Node.Prop MODULE_ALIAS
    • MODULE_EXPORT

      public static final com.google.javascript.rhino.Node.Prop MODULE_EXPORT
    • IS_SHORTHAND_PROPERTY

      public static final com.google.javascript.rhino.Node.Prop IS_SHORTHAND_PROPERTY
    • ES6_MODULE

      public static final com.google.javascript.rhino.Node.Prop ES6_MODULE
    • MAX_COLUMN_NUMBER

      public static final int MAX_COLUMN_NUMBER
      MAX_COLUMN_NUMBER represents the maximum column number that can be represented. JSCompiler's modifications to Rhino cause all tokens located beyond the maximum column to MAX_COLUMN_NUMBER.
      See Also:
  • Constructor Details

  • Method Details

    • getNonJSDocCommentString

      public final String getNonJSDocCommentString()
      Get the NonJSDoc comment string attached to this node.
      Returns:
      the information or empty string if no nonJSDoc is attached to this node
    • getNonJSDocComment

      public final NonJSDocComment getNonJSDocComment()
    • getTrailingNonJSDocCommentString

      public final String getTrailingNonJSDocCommentString()
    • getTrailingNonJSDocComment

      public final NonJSDocComment getTrailingNonJSDocComment()
    • setNonJSDocComment

      @CanIgnoreReturnValue public final Node setNonJSDocComment(NonJSDocComment comment)
      Sets the NonJSDoc comment attached to this node.
    • setTrailingNonJSDocComment

      @CanIgnoreReturnValue public final Node setTrailingNonJSDocComment(NonJSDocComment comment)
    • setIsParenthesized

      public final void setIsParenthesized(boolean b)
      Sets whether this node was inside original source-level parentheses.
    • getIsParenthesized

      public final boolean getIsParenthesized()
      Check whether node was inside original source-level parentheses.
    • newNumber

      public static Node newNumber(double number)
    • newBigInt

      public static Node newBigInt(BigInteger bigint)
    • newString

      public static Node newString(String str)
    • newString

      public static Node newString(Token token, String str)
    • newString

      public static Node newString(Token token, RhinoStringPool.LazyInternedStringList stringPool, int offset)
    • newTemplateLitString

      public static Node newTemplateLitString(String cooked, String raw)
    • newTemplateLitString

      public static Node newTemplateLitString(RhinoStringPool.LazyInternedStringList stringPool, int cookedOffsetOrNegativeOne, int rawOffset)
    • getToken

      public final Token getToken()
    • setToken

      public final void setToken(Token token)
    • hasChildren

      public final boolean hasChildren()
    • getOnlyChild

      public final Node getOnlyChild()
    • getFirstChild

      public final @Nullable Node getFirstChild()
    • getFirstFirstChild

      public final @Nullable Node getFirstFirstChild()
      Get the first child of the first child. This method assumes that the first child exists.
      Returns:
      The first child of the first child.
    • getSecondChild

      public final @Nullable Node getSecondChild()
    • getLastChild

      public final @Nullable Node getLastChild()
    • getNext

      public final @Nullable Node getNext()
    • getPrevious

      public final @Nullable Node getPrevious()
    • setClosureUnawareShadow

      public final void setClosureUnawareShadow(@Nullable Node shadowRoot)
    • getClosureUnawareShadow

      public final @Nullable Node getClosureUnawareShadow()
    • getChildAtIndex

      public final Node getChildAtIndex(int i)
      Gets the ith child, note that this is O(N) where N is the number of children.
      Parameters:
      i - The index
      Returns:
      The ith child
    • getIndexOfChild

      public final int getIndexOfChild(Node child)
      Gets the index of a child, note that this is O(N) where N is the number of children.
      Parameters:
      child - The child
      Returns:
      The index of the child
    • addChildToFront

      public final void addChildToFront(Node child)
    • addChildToBack

      public final void addChildToBack(Node child)
    • addChildrenToFront

      public final void addChildrenToFront(@Nullable Node children)
      Add all children to the front of this node.
      Parameters:
      children - first of a list of sibling nodes who have no parent. NOTE: Usually you would get this argument from a removeChildren() call. A single detached node will not work because its sibling pointers will not be correctly initialized.
    • addChildrenToBack

      public final void addChildrenToBack(Node children)
    • insertAfter

      public final void insertAfter(Node existing)
    • insertBefore

      public final void insertBefore(Node existing)
    • addChildrenAfter

      public final void addChildrenAfter(@Nullable Node children, @Nullable Node node)
      Add all children after 'node'. If 'node' is null, add them to the front of this node.
      Parameters:
      children - first of a list of sibling nodes who have no parent. NOTE: Usually you would get this argument from a removeChildren() call. A single detached node will not work because its sibling pointers will not be correctly initialized.
    • replaceWith

      public final void replaceWith(Node replacement)
      Swaps `replacement` and its subtree into the position of `this`.
    • detach

      @CanIgnoreReturnValue public final Node detach()
      Removes this node from its parent, but retains its subtree.
    • removeFirstChild

      public final @Nullable Node removeFirstChild()
      Removes the first child of Node. Equivalent to: node.removeChild(node.getFirstChild());
      Returns:
      The removed Node.
    • removeChildren

      public final @Nullable Node removeChildren()
      Remove all children, but leave them linked to each other.
      Returns:
      The first child node
    • detachChildren

      public final void detachChildren()
      Removes all children from this node and isolates the children from each other.
    • clonePropsFrom

      @CanIgnoreReturnValue public final Node clonePropsFrom(Node other)
      Clone the properties from the provided node without copying the property object. The receiving node may not have any existing properties.
      Parameters:
      other - The node to clone properties from.
      Returns:
      this node.
    • validateProperties

      public void validateProperties(Consumer<String> violationMessageConsumer)
      Checks for invalid or missing properties and feeds error messages for any violations to the given `Consumer`.

      We use a `Consumer` to avoid the cost of building a usually-empty list every time this method is called.

    • getProp

      public final @Nullable Object getProp(com.google.javascript.rhino.Node.Prop propType)
    • getBooleanProp

      public final boolean getBooleanProp(com.google.javascript.rhino.Node.Prop propType)
    • putProp

      public final void putProp(com.google.javascript.rhino.Node.Prop prop, @Nullable Object value)
    • putBooleanProp

      public final void putBooleanProp(com.google.javascript.rhino.Node.Prop propType, boolean value)
    • putIntProp

      public final void putIntProp(com.google.javascript.rhino.Node.Prop prop, int value)
    • hasBitSet

      public static final boolean hasBitSet(long bitset, int bit)
    • serializeProperties

      public final long serializeProperties()
    • deserializeProperties

      public final void deserializeProperties(long propSet)
    • setDeclaredTypeExpression

      public final void setDeclaredTypeExpression(Node typeExpression)
      Sets the syntactical type specified on this node.
    • getDeclaredTypeExpression

      public final @Nullable Node getDeclaredTypeExpression()
      Returns the syntactical type specified on this node. Not to be confused with getJSType() which returns the compiler-inferred type.
    • setJSTypeBeforeCast

      public final void setJSTypeBeforeCast(JSType type)
      Sets the type of this node before casting.
    • getJSTypeBeforeCast

      public final @Nullable JSType getJSTypeBeforeCast()
      Returns the type of this node before casting. This annotation will only exist on the first child of a CAST node after type checking.
    • setColorFromTypeCast

      public final void setColorFromTypeCast()
      Indicate that this node's color comes from a type assertion. Only set when colors are present; when JSTypes are on the AST we instead preserve the actual JSType before the type assertion.
    • isColorFromTypeCast

      public final boolean isColorFromTypeCast()
      Indicates that this node's color comes from a type assertion. Only set when colors are present.
    • getDouble

      public final double getDouble()
    • setDouble

      public final void setDouble(double x)
    • getBigInt

      public final BigInteger getBigInt()
    • setBigInt

      public final void setBigInt(BigInteger number)
    • getString

      public final String getString()
    • setString

      public final void setString(String str)
    • getRawString

      public final String getRawString()
    • getCookedString

      public final @Nullable String getCookedString()
    • toString

      public final String toString()
      Overrides:
      toString in class Object
    • toString

      public final String toString(boolean printSource, boolean printAnnotations, boolean printType)
    • toStringTree

      @CheckReturnValue public final String toStringTree()
    • appendStringTree

      public final void appendStringTree(Appendable appendable) throws IOException
      Throws:
      IOException
    • appendJsonTree

      public final void appendJsonTree(Appendable appendable) throws IOException
      Throws:
      IOException
    • setStaticSourceFileFrom

      public final void setStaticSourceFileFrom(Node other)
    • setStaticSourceFile

      @CanIgnoreReturnValue public final Node setStaticSourceFile(@Nullable StaticSourceFile file)
    • setSourceFileForTesting

      public final void setSourceFileForTesting(String name)
      Sets the source file to a non-extern file of the given name.
    • getSourceFileName

      public @Nullable String getSourceFileName()
    • getStaticSourceFile

      public @Nullable StaticSourceFile getStaticSourceFile()
      Returns the source file associated with this input.
    • setInputId

      public void setInputId(InputId inputId)
      Sets the ID of the input this Node came from.
    • getInputId

      public @Nullable InputId getInputId()
      Returns the Id of the CompilerInput associated with this Node.
    • getOriginalName

      @Deprecated public final @Nullable String getOriginalName()
      Deprecated.
      "original name" is poorly defined.
      The original name of this node, if the node has been renamed.

      Do not use original name to make optimization decisions. The original intent was to preserve some naming for lightly optimized code to put into source maps. It is not rigorously defined and is not a suitable replacement for a canonical identifier. "Original name" is not associated with any scope and easily transfers to unrelated values. Its existance and use beyond its original purpose has delayed creating useful more precise alternatives.

    • setOriginalName

      public final void setOriginalName(String s)
    • setOriginalNameFromStringPool

      public final void setOriginalNameFromStringPool(RhinoStringPool.LazyInternedStringList stringPool, int offset)
    • setOriginalNameFromName

      public final void setOriginalNameFromName(Node name)
    • isIndexable

      public final boolean isIndexable()
      Whether this node should be indexed by static analysis / code indexing tools.
    • makeNonIndexable

      public final void makeNonIndexable()
    • makeNonIndexableRecursive

      public final void makeNonIndexableRecursive()
    • isFromExterns

      public final boolean isFromExterns()
    • isClosureUnawareCode

      public final boolean isClosureUnawareCode()
      Indicates that this node is for source that was written without any understanding of the compiler's various type-checking or optimization limitations, and should be optimized very cautiously by the compiler.

      This attribute is per source file, not per node / subset of an source file's AST.

    • getLength

      public final int getLength()
    • setLength

      public final void setLength(int length)
    • getLineno

      public final int getLineno()
    • getCharno

      public final int getCharno()
    • getLocation

      public final String getLocation()
    • getSourceOffset

      public int getSourceOffset()
    • getSourcePosition

      public final int getSourcePosition()
    • setLinenoCharno

      @CanIgnoreReturnValue public final Node setLinenoCharno(int lineno, int charno)
      Merges the line number and character number in one integer.

      The charno takes the first 12 bits and the line number takes the rest. If the charno is greater than (2^12)-1 it is adjusted to (2^12)-1

    • children

      @Deprecated public final Iterable<Node> children()
      Deprecated.
      Return an iterable object that iterates over this node's children. The iterator does not support the optional operation Iterator.remove().

      To iterate over a node's children, one can write

      Node n = ...;
       for (Node child : n.children()) { ...
      NOTE: Do not use 'children' for recursive descent of the AST. The overhead of using iterators rather then getFirstChild()/getNext() is very significant. We have deprecated it as it is easy to misuse.
    • getParent

      public final @Nullable Node getParent()
    • hasParent

      public final boolean hasParent()
    • getGrandparent

      public final @Nullable Node getGrandparent()
    • getAncestor

      public final @Nullable Node getAncestor(int level)
      Gets the ancestor node relative to this.
      Parameters:
      level - 0 = this, 1 = the parent, etc.
    • isDescendantOf

      public final boolean isDescendantOf(Node node)
      Is this Node the same as node or a descendant of node?
    • isOnlyChildOf

      public final boolean isOnlyChildOf(Node possibleParent)
    • isFirstChildOf

      public final boolean isFirstChildOf(Node possibleParent)
    • isSecondChildOf

      public final boolean isSecondChildOf(Node possibleParent)
    • getAncestors

      public final Node.AncestorIterable getAncestors()
      Iterates all of the node's ancestors excluding itself.
    • hasOneChild

      public final boolean hasOneChild()
      Check for one child more efficiently than by iterating over all the children as is done with Node.getChildCount().
      Returns:
      Whether the node has exactly one child.
    • hasTwoChildren

      public final boolean hasTwoChildren()
      Check for two children more efficiently than getChildCount() == 2
      Returns:
      Whether the node has exactly two children.
    • hasZeroOrOneChild

      public final boolean hasZeroOrOneChild()
      Check for zero or one child more efficiently than by iterating over all the children as is done with Node.getChildCount().
      Returns:
      Whether the node has no children or exactly one child.
    • hasMoreThanOneChild

      public final boolean hasMoreThanOneChild()
      Check for more than one child more efficiently than by iterating over all the children as is done with Node.getChildCount().
      Returns:
      Whether the node more than one child.
    • hasXChildren

      public final boolean hasXChildren(int x)
      Check for has exactly the number of specified children.
      Returns:
      Whether the node has exactly the number of children specified.
    • getChildCount

      public final int getChildCount()
    • hasChild

      public final boolean hasChild(Node child)
    • isEquivalentToShallow

      public final boolean isEquivalentToShallow(Node node)
      Checks equivalence without going into child nodes
    • isEquivalentWithSideEffectsTo

      public final boolean isEquivalentWithSideEffectsTo(Node node)
      Returns true if this node is equivalent semantically to another including side effects.
    • isEquivalentWithSideEffectsToShallow

      public final boolean isEquivalentWithSideEffectsToShallow(Node node)
      Returns true if this node is equivalent semantically to another including side effects.
    • isEquivalentToTyped

      public final boolean isEquivalentToTyped(Node node)
      Returns true if this node is equivalent semantically to another and the types are equivalent.
    • isEquivalentTo

      public final boolean isEquivalentTo(Node node)
      Returns true if this node is equivalent semantically to another
    • isEquivalentTo

      public boolean isEquivalentTo(Node node, boolean compareType, boolean recurse, boolean jsDoc, boolean sideEffect)
      Returns whether this node is equivalent semantically to the provided node.
      Parameters:
      compareType - Whether to compare the JSTypes of the nodes.
      recurse - Whether to compare the children of the current node. If not, only the count of the children are compared.
      jsDoc - Whether to check that the JsDoc of the nodes are equivalent.
      sideEffect - Whether to check that the side-effect flags of the nodes are equivalent.
    • getQualifiedName

      public final @Nullable String getQualifiedName()
      This function takes a set of GETPROP nodes and produces a string that is each property separated by dots. If the node ultimately under the left sub-tree is not a simple name, this is not a valid qualified name.
      Returns:
      a null if this is not a qualified name, or a dot-separated string of the name and properties.
    • getQualifiedNameObject

      public final @Nullable QualifiedName getQualifiedNameObject()
    • getOriginalQualifiedName

      @Deprecated public final @Nullable String getOriginalQualifiedName()
      Deprecated.
      "original name" is poorly defined. See #getOriginalName
      This function takes a set of GETPROP nodes and produces a string that is each property separated by dots. If the node ultimately under the left sub-tree is not a simple name, this is not a valid qualified name. This method returns the original name of each segment rather than the renamed version.
      Returns:
      a null if this is not a qualified name, or a dot-separated string of the name and properties.
    • isQualifiedName

      public final boolean isQualifiedName()
      Returns whether a node corresponds to a simple or a qualified name, such as x or a.b.c or this.a.
    • matchesName

      public final boolean matchesName(String name)
      Returns whether a node matches a simple name, such as x, returns false if this is not a NAME node.
    • matchesName

      public final boolean matchesName(Node n)
      Check that if two NAME node match, returns false if either node is not a NAME node. As a empty string is not considered a valid Name (it is an AST placeholder), empty strings are never considered to be matches.
    • matchesQualifiedName

      public final boolean matchesQualifiedName(String name)
      Returns whether a node matches a simple or a qualified name, such as x or a.b.c or this.a.
    • matchesQualifiedName

      public final boolean matchesQualifiedName(Node n)
      Returns whether a node matches a simple or a qualified name, such as x or a.b.c or this.a.
    • isUnscopedQualifiedName

      public final boolean isUnscopedQualifiedName()
      Returns whether a node corresponds to a simple or a qualified name without a "this" reference, such as a.b.c, but not this.a .
    • isValidAssignmentTarget

      public final boolean isValidAssignmentTarget()
    • clone

      public final Object clone()
      Overrides:
      clone in class Object
    • cloneNode

      @CheckReturnValue public final Node cloneNode()
      Returns a detached clone of the Node, specifically excluding its children.
    • cloneTree

      @CheckReturnValue public final Node cloneTree()
      Returns a detached clone of the Node and all its children.
    • cloneTree

      @CheckReturnValue public final Node cloneTree(boolean cloneTypeExprs)
    • srcref

      @CanIgnoreReturnValue public final Node srcref(Node other)
      Copy the source info from `other` onto `this`.
    • srcrefTree

      @CanIgnoreReturnValue public final Node srcrefTree(Node other)
      For all Nodes in the subtree of `this`, copy the source info from `other`.
    • srcrefIfMissing

      @CanIgnoreReturnValue public final Node srcrefIfMissing(Node other)
      Iff source info is not set on `this`, copy the source info from `other`.
    • srcrefTreeIfMissing

      @CanIgnoreReturnValue public final Node srcrefTreeIfMissing(Node other)
      For all Nodes in the subtree of `this`, iff source info is not set, copy the source info from `other`.
    • getJSType

      public final @Nullable JSType getJSType()
      Returns the compiler inferred type on this node. Not to be confused with getDeclaredTypeExpression() which returns the syntactically specified type.
    • getJSTypeRequired

      public final JSType getJSTypeRequired()
      Returns the compiled inferred type on this node, or throws an NPE if there isn't one.
    • setJSType

      @CanIgnoreReturnValue public final Node setJSType(@Nullable JSType x)
    • getColor

      public final @Nullable Color getColor()
      Returns the compiled inferred type on this node. Not to be confused with getDeclaredTypeExpression() which returns the syntactically specified type.
    • setColor

      @CanIgnoreReturnValue public final Node setColor(@Nullable Color x)
    • copyTypeFrom

      @CanIgnoreReturnValue public final Node copyTypeFrom(Node other)
      Copies a nodes JSType or Color (if present)
    • getJSDocInfo

      public final @Nullable JSDocInfo getJSDocInfo()
      Get the JSDocInfo attached to this node.
      Returns:
      the information or null if no JSDoc is attached to this node
    • setJSDocInfo

      @CanIgnoreReturnValue public final Node setJSDocInfo(JSDocInfo info)
      Sets the JSDocInfo attached to this node.
    • setChangeTime

      public final void setChangeTime(int time)
      This node was last changed at time
    • getChangeTime

      public final int getChangeTime()
      Returns the time of the last change for this node
    • setDeleted

      public final void setDeleted(boolean deleted)
    • isDeleted

      public final boolean isDeleted()
    • setTypedefTypeProp

      public final void setTypedefTypeProp(JSType type)
      If this node represents a typedef declaration, the associated JSType
    • getTypedefTypeProp

      public final JSType getTypedefTypeProp()
      If this node represents a typedef declaration, the associated JSType
    • setUnusedParameter

      public final void setUnusedParameter(boolean unused)
      Sets the value for isUnusedParameter()
    • isUnusedParameter

      public final boolean isUnusedParameter()
      Is this node an unused function parameter declaration?

      Set by RemoveUnusedVars

    • setShorthandProperty

      public final void setShorthandProperty(boolean shorthand)
      Sets the isShorthandProperty annotation.
    • isShorthandProperty

      public final boolean isShorthandProperty()
      Whether this {x:x} property was originally parsed as {x}.
    • isOptionalEs6Typed

      public final boolean isOptionalEs6Typed()
      Returns whether this node is an optional node in the ES6 Typed syntax.
    • setIsSyntheticBlock

      public final void setIsSyntheticBlock(boolean val)
      Sets whether this is a synthetic block that should not be considered a real source block.
    • isSyntheticBlock

      public final boolean isSyntheticBlock()
      Returns whether this is a synthetic block that should not be considered a real source block.
    • setIsSynthesizedUnfulfilledNameDeclaration

      public final void setIsSynthesizedUnfulfilledNameDeclaration(boolean val)
    • isSynthesizedUnfulfilledNameDeclaration

      public final boolean isSynthesizedUnfulfilledNameDeclaration()
    • setUseStrict

      public final void setUseStrict(boolean x)
      Sets whether this node contained the "use strict" directive.
    • isUseStrict

      public final boolean isUseStrict()
      Returns whether this node contained the "use strict" directive.
    • setIsAddedBlock

      public final void setIsAddedBlock(boolean val)
      Sets whether this is an added block that should not be considered a real source block. Eg: In "if (true) x;", the "x;" is put under an added block in the AST.
    • isAddedBlock

      public final boolean isAddedBlock()
      Returns whether this is an added block that should not be considered a real source block.
    • setStaticMember

      public final void setStaticMember(boolean isStatic)
      Sets whether this node is a static member node. This method is meaningful only on Token.GETTER_DEF, Token.SETTER_DEF or Token.MEMBER_FUNCTION_DEF nodes contained within Token.CLASS.
    • isStaticMember

      public final boolean isStaticMember()
      Returns whether this node is a static member node. This method is meaningful only on Token.GETTER_DEF, Token.SETTER_DEF or Token.MEMBER_FUNCTION_DEF nodes contained within Token.CLASS.
    • setIsGeneratorFunction

      public final void setIsGeneratorFunction(boolean isGenerator)
      Sets whether this node is a generator node. This method is meaningful only on Token.FUNCTION or Token.MEMBER_FUNCTION_DEF nodes.
    • isGeneratorFunction

      public final boolean isGeneratorFunction()
      Returns whether this node is a generator function node.
    • setGeneratorMarker

      public final void setGeneratorMarker(boolean isGeneratorMarker)
      Sets whether this node subtree contains YIELD nodes.

      It's used in the translation of generators.

    • isGeneratorMarker

      public final boolean isGeneratorMarker()
      Returns whether this node was marked as containing YIELD nodes.

      It's used in the translation of generators.

    • setGeneratorSafe

      public final void setGeneratorSafe(boolean isGeneratorSafe)
      Set the value for isGeneratorSafe()
    • isGeneratorSafe

      public final boolean isGeneratorSafe()
      Used when translating ES6 generators. If this returns true, this Node was generated by the compiler, and it is safe to copy this node to the transpiled output with no further changes.
    • setIsOptionalChainStart

      public final void setIsOptionalChainStart(boolean isOptionalChainStart)
      Sets whether this node is the start of an optional chain. This method is meaningful only on Token.OPTCHAIN_GETELEM, Token.OPTCHAIN_GETPROP, Token.OPTCHAIN_CALL
    • isOptionalChainStart

      public final boolean isOptionalChainStart()
      Returns whether this node is an optional chaining node.
    • setIsArrowFunction

      public final void setIsArrowFunction(boolean isArrow)
      Sets whether this node is a arrow function node. This method is meaningful only on Token.FUNCTION
    • isArrowFunction

      public final boolean isArrowFunction()
      Returns whether this node is a arrow function node.
    • setIsAsyncFunction

      public void setIsAsyncFunction(boolean isAsync)
      Sets whether this node is an async function node. This method is meaningful only on Token.FUNCTION
    • isAsyncFunction

      public final boolean isAsyncFunction()
      Returns whether this is an async function node.
    • isAsyncGeneratorFunction

      public final boolean isAsyncGeneratorFunction()
      Returns whether this is an async generator function node.
    • setYieldAll

      public final void setYieldAll(boolean isGenerator)
      Sets whether this node is a generator node. This method is meaningful only on Token.FUNCTION or Token.MEMBER_FUNCTION_DEF nodes.
    • isYieldAll

      public final boolean isYieldAll()
      Returns whether this node is a generator node. This method is meaningful only on Token.FUNCTION or Token.MEMBER_FUNCTION_DEF nodes.
    • setTrailingComma

      public final void setTrailingComma(boolean hasTrailingComma)
      Indicates that there was a trailing comma in this list
    • hasTrailingComma

      public final boolean hasTrailingComma()
      Returns true if there was a trailing comma in the orginal code
    • setSideEffectFlags

      public final void setSideEffectFlags(int flags)
      Marks this function or constructor call's side effect flags. This property is only meaningful for Token.CALL and Token.NEW nodes.
    • setSideEffectFlags

      public final void setSideEffectFlags(Node.SideEffectFlags flags)
    • getSideEffectFlags

      public final int getSideEffectFlags()
      Returns the side effects flags for this node.
    • isOnlyModifiesThisCall

      public final boolean isOnlyModifiesThisCall()
      Returns whether the only side-effect is "modifies this" or there are no side effects.
    • isOnlyModifiesArgumentsCall

      public final boolean isOnlyModifiesArgumentsCall()
      Returns whether the only side-effect is "modifies arguments" or there are no side effects.
    • isNoSideEffectsCall

      public final boolean isNoSideEffectsCall()
      Returns true if this node is a function or constructor call that has no side effects.
    • mayMutateArguments

      public final boolean mayMutateArguments()
      Returns true if this is a new/call that may mutate its arguments.
    • mayMutateGlobalStateOrThrow

      public final boolean mayMutateGlobalStateOrThrow()
      Returns true if this is a new/call that may mutate global state or throw.
    • isDeclaredConstantVar

      public final boolean isDeclaredConstantVar()
      Returns whether this variable is declared as a constant.

      The compiler considers a variable to be declared if:

      • it is declared with the const keyword, or
      • It is declared with a jsdoc @const annotation, or
      • The current coding convention considers it to be a constant.

      Only valid to call on a name node.

    • setDeclaredConstantVar

      public final void setDeclaredConstantVar(boolean value)
      Sets this variable to be a declared constant.

      See isDeclaredConstantVar() for the rules.

    • isInferredConstantVar

      public final boolean isInferredConstantVar()
      Returns whether this variable is inferred to be constant.

      The compiler infers a variable to be a constant if:

      • It is assigned at its declaration site, and
      • It is never reassigned during its lifetime, and
      • It is not defined by an extern.

      Only valid to call on a name node.

    • setInferredConstantVar

      public final void setInferredConstantVar(boolean value)
      Sets this variable to be an inferred constant. *

      See isInferredConstantVar() for the rules.

    • isQuotedStringKey

      public final boolean isQuotedStringKey()
    • setQuotedStringKey

      public final void setQuotedStringKey()
    • isPrivateIdentifier

      public final boolean isPrivateIdentifier()
    • setPrivateIdentifier

      public final void setPrivateIdentifier()
    • isAdd

      public final boolean isAdd()
      AST type check methods
    • isSub

      public final boolean isSub()
    • isAnd

      public final boolean isAnd()
    • isAssignAnd

      public final boolean isAssignAnd()
    • isArrayLit

      public final boolean isArrayLit()
    • isArrayPattern

      public final boolean isArrayPattern()
    • isAssign

      public final boolean isAssign()
    • isAssignAdd

      public final boolean isAssignAdd()
    • isNormalBlock

      public final boolean isNormalBlock()
    • isBlock

      public final boolean isBlock()
    • isRoot

      public final boolean isRoot()
    • isAwait

      public final boolean isAwait()
    • isBigInt

      public final boolean isBigInt()
    • isBitNot

      public final boolean isBitNot()
    • isBreak

      public final boolean isBreak()
    • isCall

      public final boolean isCall()
    • isCase

      public final boolean isCase()
    • isCast

      public final boolean isCast()
    • isCatch

      public final boolean isCatch()
    • isClass

      public final boolean isClass()
    • isClassMembers

      public final boolean isClassMembers()
    • isComma

      public final boolean isComma()
    • isComputedProp

      public final boolean isComputedProp()
    • isContinue

      public final boolean isContinue()
    • isConst

      public final boolean isConst()
    • isDebugger

      public final boolean isDebugger()
    • isDec

      public final boolean isDec()
    • isDefaultCase

      public final boolean isDefaultCase()
    • isDefaultValue

      public final boolean isDefaultValue()
    • isDelProp

      public final boolean isDelProp()
    • isDestructuringLhs

      public final boolean isDestructuringLhs()
    • isDestructuringPattern

      public final boolean isDestructuringPattern()
    • isDo

      public final boolean isDo()
    • isEmpty

      public final boolean isEmpty()
    • isExponent

      public final boolean isExponent()
    • isAssignExponent

      public final boolean isAssignExponent()
    • isExport

      public final boolean isExport()
    • isExportSpec

      public final boolean isExportSpec()
    • isExportSpecs

      public final boolean isExportSpecs()
    • isExprResult

      public final boolean isExprResult()
    • isFalse

      public final boolean isFalse()
    • isVanillaFor

      public final boolean isVanillaFor()
    • isForIn

      public final boolean isForIn()
    • isForOf

      public final boolean isForOf()
    • isForAwaitOf

      public final boolean isForAwaitOf()
    • isFunction

      public final boolean isFunction()
    • isGetterDef

      public final boolean isGetterDef()
    • isGetElem

      public final boolean isGetElem()
    • isGetProp

      public final boolean isGetProp()
    • isHook

      public final boolean isHook()
    • isIf

      public final boolean isIf()
    • isImport

      public final boolean isImport()
    • isImportMeta

      public final boolean isImportMeta()
    • isImportStar

      public final boolean isImportStar()
    • isImportSpec

      public final boolean isImportSpec()
    • isImportSpecs

      public final boolean isImportSpecs()
    • isIn

      public final boolean isIn()
    • isInc

      public final boolean isInc()
    • isInstanceOf

      public final boolean isInstanceOf()
    • isInterface

      public final boolean isInterface()
    • isInterfaceMembers

      public final boolean isInterfaceMembers()
    • isRecordType

      public final boolean isRecordType()
    • isCallSignature

      public final boolean isCallSignature()
    • isIndexSignature

      public final boolean isIndexSignature()
    • isLabel

      public final boolean isLabel()
    • isLabelName

      public final boolean isLabelName()
    • isLet

      public final boolean isLet()
    • isMemberFunctionDef

      public final boolean isMemberFunctionDef()
    • isMemberVariableDef

      public final boolean isMemberVariableDef()
    • isMemberFieldDef

      public final boolean isMemberFieldDef()
    • isComputedFieldDef

      public final boolean isComputedFieldDef()
    • isModuleBody

      public final boolean isModuleBody()
    • isName

      public final boolean isName()
    • isNE

      public final boolean isNE()
    • isSHNE

      public final boolean isSHNE()
    • isEQ

      public final boolean isEQ()
    • isSHEQ

      public final boolean isSHEQ()
    • isNeg

      public final boolean isNeg()
    • isNew

      public final boolean isNew()
    • isNot

      public final boolean isNot()
    • isNull

      public final boolean isNull()
    • isNullishCoalesce

      public final boolean isNullishCoalesce()
    • isAssignNullishCoalesce

      public final boolean isAssignNullishCoalesce()
    • isNumber

      public final boolean isNumber()
    • isObjectLit

      public final boolean isObjectLit()
    • isObjectPattern

      public final boolean isObjectPattern()
    • isOptChainCall

      public final boolean isOptChainCall()
    • isOptChainGetElem

      public final boolean isOptChainGetElem()
    • isOptChainGetProp

      public final boolean isOptChainGetProp()
    • isOr

      public final boolean isOr()
    • isAssignOr

      public final boolean isAssignOr()
    • isParamList

      public final boolean isParamList()
    • isRegExp

      public final boolean isRegExp()
    • isRest

      public final boolean isRest()
    • isObjectRest

      public final boolean isObjectRest()
    • isReturn

      public final boolean isReturn()
    • isScript

      public final boolean isScript()
    • isSetterDef

      public final boolean isSetterDef()
    • isSpread

      public final boolean isSpread()
    • isString

      public final boolean isString()
    • isStringKey

      public final boolean isStringKey()
    • isStringLit

      public final boolean isStringLit()
    • isSuper

      public final boolean isSuper()
    • isSwitch

      public final boolean isSwitch()
    • isSwitchBody

      public final boolean isSwitchBody()
    • isTaggedTemplateLit

      public final boolean isTaggedTemplateLit()
    • isTemplateLit

      public final boolean isTemplateLit()
    • isTemplateLitString

      public final boolean isTemplateLitString()
    • isTemplateLitSub

      public final boolean isTemplateLitSub()
    • isThis

      public final boolean isThis()
    • isThrow

      public final boolean isThrow()
    • isTrue

      public final boolean isTrue()
    • isTry

      public final boolean isTry()
    • isTypeOf

      public final boolean isTypeOf()
    • isVar

      public final boolean isVar()
    • isVoid

      public final boolean isVoid()
    • isWhile

      public final boolean isWhile()
    • isWith

      public final boolean isWith()
    • isYield

      public final boolean isYield()
    • isDeclare

      public final boolean isDeclare()