com.google.javascript.rhino
Class Node

java.lang.Object
  extended by com.google.javascript.rhino.Node
All Implemented Interfaces:
Serializable, Cloneable

public class Node
extends Object
implements Cloneable, Serializable

This class implements the root of the intermediate representation.

See Also:
Serialized Form

Nested Class Summary
static class Node.AncestorIterable
          Iterator to go up the ancestor tree.
 class Node.FileLevelJsDocBuilder
          An inner class that provides back-door access to the license property of the JSDocInfo property for this node.
static class Node.SideEffectFlags
          A helper class for getting and setting the side-effect flags.
 
Field Summary
static int BRACELESS_TYPE
           
static int COLUMN_BITS
          COLUMN_BITS represents how many of the lower-order bits of sourcePosition are reserved for storing the column number.
static int COLUMN_MASK
          COLUMN_MASK stores a value where bits storing the column number are set, and bits storing the line are not set.
static int DECR_FLAG
           
static int DIRECT_EVAL
           
static int DIRECTIVES
           
static int EMPTY_BLOCK
           
static int FLAG_ARGUMENTS_UNMODIFIED
           
static int FLAG_GLOBAL_STATE_UNMODIFIED
           
static int FLAG_LOCAL_RESULTS
           
static int FLAG_NO_THROWS
           
static int FLAG_THIS_UNMODIFIED
           
static int FREE_CALL
           
static int INCRDECR_PROP
           
static int INPUT_ID
           
static int IS_CONSTANT_NAME
           
static int IS_DISPATCHER
           
static int IS_NAMESPACE
           
static int IS_OPTIONAL_PARAM
           
static int IS_VAR_ARGS_PARAM
           
static int JSDOC_INFO_PROP
           
static int LAST_PROP
           
static int LENGTH
           
static int MAX_COLUMN_NUMBER
          MAX_COLUMN_NUMBER represents the maximum column number that can be represented.
static int NO_SIDE_EFFECTS
           
static int OPT_ARG_NAME
           
static int ORIGINALNAME_PROP
           
static int PARENTHESIZED_PROP
           
static int POST_FLAG
           
static int QUOTED_PROP
           
static int SIDE_EFFECT_FLAGS
           
static int SIDE_EFFECTS_ALL
           
static int SIDE_EFFECTS_FLAGS_MASK
           
static int SLASH_V
           
static int SOURCENAME_PROP
           
static int STATIC_SOURCE_FILE
           
static int SYNTHETIC_BLOCK_PROP
           
static int VAR_ARGS_NAME
           
 
Constructor Summary
Node(int nodeType)
           
Node(int nodeType, int lineno, int charno)
           
Node(int nodeType, Node child)
           
Node(int nodeType, Node[] children)
           
Node(int nodeType, Node[] children, int lineno, int charno)
           
Node(int nodeType, Node child, int lineno, int charno)
           
Node(int nodeType, Node left, Node right)
           
Node(int nodeType, Node left, Node right, int lineno, int charno)
           
Node(int nodeType, Node left, Node mid, Node right)
           
Node(int nodeType, Node left, Node mid, Node right, int lineno, int charno)
           
Node(int nodeType, Node left, Node mid, Node mid2, Node right)
           
Node(int nodeType, Node left, Node mid, Node mid2, Node right, int lineno, int charno)
           
 
Method Summary
 void addChildAfter(Node newChild, Node node)
          Add 'child' after 'node'.
 void addChildBefore(Node newChild, Node node)
          Add 'child' before 'node'.
 void addChildrenAfter(Node children, Node node)
          Add all children after 'node'.
 void addChildrenToBack(Node children)
           
 void addChildrenToFront(Node children)
           
 void addChildToBack(Node child)
           
 void addChildToFront(Node child)
           
 void addSuppression(String warning)
          Adds a warning to be suppressed.
 void appendStringTree(Appendable appendable)
           
 String checkTreeEquals(Node node2)
          Checks if the subtree under this node is the same as another subtree.
 Iterable<Node> children()
          Return an iterable object that iterates over this nodes's children.
 Node cloneNode()
           
 Node clonePropsFrom(Node other)
          Clone the properties from the provided node without copying the property object.
 Node cloneTree()
           
 Node copyInformationFrom(Node other)
          Copies source file and name information from the other node given to the current node.
 Node copyInformationFromForTree(Node other)
          Copies source file and name information from the other node to the entire tree rooted at this node.
 void detachChildren()
          Removes all children from this node and isolates the children from each other.
 Node detachFromParent()
          Removes this node from its parent.
protected static int extractCharno(int lineCharNo)
          Extracts the character number and character number from a merged line char number (see mergeLineCharNo(int, int)).
protected static int extractLineno(int lineCharNo)
          Extracts the line number and character number from a merged line char number (see mergeLineCharNo(int, int)).
 Node getAncestor(int level)
          Gets the ancestor node relative to this.
 Node.AncestorIterable getAncestors()
          Iterates all of the node's ancestors excluding itself.
 boolean getBooleanProp(int propType)
           
 int getCharno()
           
 Node getChildAtIndex(int i)
           
 Node getChildBefore(Node child)
           
 int getChildCount()
           
 Set<String> getDirectives()
          Returns the set of ES5 directives for this node.
 double getDouble()
          Can only be called when getType() == TokenStream.NUMBER
 int getExistingIntProp(int propType)
           
 Node getFirstChild()
           
 int getIndexOfChild(Node child)
           
 InputId getInputId()
           
 int getIntProp(int propType)
          Returns the integer value for the property, or 0 if the property is not defined.
 Node.FileLevelJsDocBuilder getJsDocBuilderForNode()
           
 JSDocInfo getJSDocInfo()
          Get the JSDocInfo attached to this node.
 JSType getJSType()
           
 Node getLastChild()
           
 Node getLastSibling()
           
 int getLength()
           
 int getLineno()
           
 Node getNext()
           
 Node getParent()
           
 Object getProp(int propType)
           
 String getQualifiedName()
          This function takes a set of GETPROP nodes and produces a string that is each property separated by dots.
 int getSideEffectFlags()
          Returns the side effects flags for this node.
 String getSourceFileName()
           
 int getSourceOffset()
           
 int getSourcePosition()
           
 StaticSourceFile getStaticSourceFile()
          Returns the source file associated with this input.
 String getString()
          Can only be called when node has String context.
 int getType()
           
 boolean hasChild(Node child)
           
 boolean hasChildren()
           
 boolean hasMoreThanOneChild()
          Check for more than one child more efficiently than by iterating over all the children as is done with Node.getChildCount().
 boolean hasOneChild()
          Check for one child more efficiently than by iterating over all the children as is done with Node.getChildCount().
 boolean isAdd()
          AST type check methods
 boolean isAnd()
           
 boolean isArrayLit()
           
 boolean isAssign()
           
 boolean isAssignAdd()
           
 boolean isBlock()
           
 boolean isBreak()
           
 boolean isCall()
           
 boolean isCase()
           
 boolean isCatch()
           
 boolean isComma()
           
 boolean isContinue()
           
 boolean isDebugger()
           
 boolean isDec()
           
 boolean isDefaultCase()
           
 boolean isDelProp()
           
 boolean isDo()
           
 boolean isEmpty()
           
 boolean isEquivalentTo(Node node)
          Returns true if this node is equivalent semantically to another
 boolean isEquivalentToTyped(Node node)
          Returns true if this node is equivalent semantically to another and the types are equivalent.
 boolean isExprResult()
           
 boolean isFalse()
           
 boolean isFor()
           
 boolean isFromExterns()
           
 boolean isFunction()
           
 boolean isGetElem()
           
 boolean isGetProp()
           
 boolean isGetterDef()
           
 boolean isHook()
           
 boolean isIf()
           
 boolean isIn()
           
 boolean isInc()
           
 boolean isInstanceOf()
           
 boolean isLabel()
           
 boolean isLabelName()
           
 boolean isLocalResultCall()
          Returns true if this node is a function or constructor call that returns a primitive or a local object (an object that has no other references).
 boolean isName()
           
 boolean isNE()
           
 boolean isNew()
           
 boolean isNoSideEffectsCall()
          Returns true if this node is a function or constructor call that has no side effects.
 boolean isNot()
           
 boolean isNull()
           
 boolean isNumber()
           
 boolean isObjectLit()
           
 boolean isOnlyModifiesThisCall()
           
 boolean isOptionalArg()
          Returns whether this node is an optional argument node.
 boolean isOr()
           
 boolean isParamList()
           
 boolean isQualifiedName()
          Returns whether a node corresponds to a simple or a qualified name, such as x or a.b.c or this.a.
 boolean isQuotedString()
          This should only be called for STRING nodes children of OBJECTLIT.
 boolean isRegExp()
           
 boolean isReturn()
           
 boolean isScript()
           
 boolean isSetterDef()
           
 boolean isString()
           
 boolean isSwitch()
           
 boolean isSyntheticBlock()
          Returns whether this is a synthetic block that should not be considered a real source block.
 boolean isThis()
           
 boolean isThrow()
           
 boolean isTrue()
           
 boolean isTry()
           
 boolean isTypeOf()
           
 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 .
 boolean isVar()
           
 boolean isVarArgs()
          Returns whether this node is a variable length argument node.
 boolean isVoid()
           
 boolean isWhile()
           
 boolean isWith()
           
protected static int mergeLineCharNo(int lineno, int charno)
          Merges the line number and character number in one integer.
static Node newNumber(double number)
           
static Node newNumber(double number, int lineno, int charno)
           
static Node newString(int type, String str)
           
static Node newString(int type, String str, int lineno, int charno)
           
static Node newString(String str)
           
static Node newString(String str, int lineno, int charno)
           
 void putBooleanProp(int propType, boolean value)
           
 void putIntProp(int propType, int value)
           
 void putProp(int propType, Object value)
           
 void removeChild(Node child)
          Detach a child from its parent and siblings.
 Node removeChildAfter(Node prev)
           
 Node removeChildren()
           
 Node removeFirstChild()
          Removes the first child of Node.
 void removeProp(int propType)
           
 void replaceChild(Node child, Node newChild)
          Detaches child from Node and replaces it with newChild.
 void replaceChildAfter(Node prevChild, Node newChild)
           
 void setCharno(int charno)
           
 void setDirectives(Set<String> val)
          Sets the ES5 directives on this node.
 void setDouble(double s)
          Can only be called when getType() == TokenStream.NUMBER
 void setInputId(InputId inputId)
           
 void setIsSyntheticBlock(boolean val)
          Sets whether this is a synthetic block that should not be considered a real source block.
 void setJSDocInfo(JSDocInfo info)
          Sets the JSDocInfo attached to this node.
 void setJSType(JSType jsType)
           
 void setLength(int length)
           
 void setLineno(int lineno)
           
 void setOptionalArg(boolean optionalArg)
          Sets whether this node is an optional argument node.
 void setQuotedString()
          This should only be called for STRING nodes children of OBJECTLIT.
 void setSideEffectFlags(int flags)
          Marks this function or constructor call's side effect flags.
 void setSideEffectFlags(Node.SideEffectFlags flags)
           
 void setSourceEncodedPosition(int sourcePosition)
           
 void setSourceEncodedPositionForTree(int sourcePosition)
           
 void setSourceFileForTesting(String name)
          Sets the source file to a non-extern file of the given name.
 void setStaticSourceFile(StaticSourceFile file)
           
 void setString(String s)
          Can only be called when node has String context.
 void setType(int type)
           
 void setVarArgs(boolean varArgs)
          Sets whether this node is a variable length argument node.
 void setWasEmptyNode(boolean val)
          Sets whether this is a synthetic block that should not be considered a real source block.
 Iterable<Node> siblings()
          Return an iterable object that iterates over this nodes's siblings.
 Node srcref(Node other)
           
 Node srcrefTree(Node other)
           
 String toString()
           
 String toString(boolean printSource, boolean printAnnotations, boolean printType)
           
 String toStringTree()
           
 Node useSourceInfoFrom(Node other)
          Overwrite all the source information in this node with that of other.
 Node useSourceInfoFromForTree(Node other)
          Overwrite all the source information in this node and its subtree with that of other.
 Node useSourceInfoIfMissingFrom(Node other)
          Overwrite all the source information in this node with that of other iff the source info is missing.
 Node useSourceInfoIfMissingFromForTree(Node other)
          Overwrite all the source information in this node and its subtree with that of other iff the source info is missing.
 boolean wasEmptyNode()
          Returns whether this is a synthetic block that should not be considered a real source block.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SOURCENAME_PROP

public static final int SOURCENAME_PROP
See Also:
Constant Field Values

JSDOC_INFO_PROP

public static final int JSDOC_INFO_PROP
See Also:
Constant Field Values

VAR_ARGS_NAME

public static final int VAR_ARGS_NAME
See Also:
Constant Field Values

INCRDECR_PROP

public static final int INCRDECR_PROP
See Also:
Constant Field Values

PARENTHESIZED_PROP

public static final int PARENTHESIZED_PROP
See Also:
Constant Field Values

QUOTED_PROP

public static final int QUOTED_PROP
See Also:
Constant Field Values

OPT_ARG_NAME

public static final int OPT_ARG_NAME
See Also:
Constant Field Values

SYNTHETIC_BLOCK_PROP

public static final int SYNTHETIC_BLOCK_PROP
See Also:
Constant Field Values

EMPTY_BLOCK

public static final int EMPTY_BLOCK
See Also:
Constant Field Values

ORIGINALNAME_PROP

public static final int ORIGINALNAME_PROP
See Also:
Constant Field Values

BRACELESS_TYPE

public static final int BRACELESS_TYPE
See Also:
Constant Field Values

SIDE_EFFECT_FLAGS

public static final int SIDE_EFFECT_FLAGS
See Also:
Constant Field Values

IS_CONSTANT_NAME

public static final int IS_CONSTANT_NAME
See Also:
Constant Field Values

IS_OPTIONAL_PARAM

public static final int IS_OPTIONAL_PARAM
See Also:
Constant Field Values

IS_VAR_ARGS_PARAM

public static final int IS_VAR_ARGS_PARAM
See Also:
Constant Field Values

IS_NAMESPACE

public static final int IS_NAMESPACE
See Also:
Constant Field Values

IS_DISPATCHER

public static final int IS_DISPATCHER
See Also:
Constant Field Values

DIRECTIVES

public static final int DIRECTIVES
See Also:
Constant Field Values

DIRECT_EVAL

public static final int DIRECT_EVAL
See Also:
Constant Field Values

FREE_CALL

public static final int FREE_CALL
See Also:
Constant Field Values

STATIC_SOURCE_FILE

public static final int STATIC_SOURCE_FILE
See Also:
Constant Field Values

LENGTH

public static final int LENGTH
See Also:
Constant Field Values

INPUT_ID

public static final int INPUT_ID
See Also:
Constant Field Values

SLASH_V

public static final int SLASH_V
See Also:
Constant Field Values

LAST_PROP

public static final int LAST_PROP
See Also:
Constant Field Values

DECR_FLAG

public static final int DECR_FLAG
See Also:
Constant Field Values

POST_FLAG

public static final int POST_FLAG
See Also:
Constant Field Values

COLUMN_BITS

public static final int COLUMN_BITS
COLUMN_BITS represents how many of the lower-order bits of sourcePosition are reserved for storing the column number. Bits above these store the line number. This gives us decent position information for everything except files already passed through a minimizer, where lines might be longer than 4096 characters.

See Also:
Constant Field Values

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:
Constant Field Values

COLUMN_MASK

public static final int COLUMN_MASK
COLUMN_MASK stores a value where bits storing the column number are set, and bits storing the line are not set. It's handy for separating column number from line number.

See Also:
Constant Field Values

FLAG_GLOBAL_STATE_UNMODIFIED

public static final int FLAG_GLOBAL_STATE_UNMODIFIED
See Also:
Constant Field Values

FLAG_THIS_UNMODIFIED

public static final int FLAG_THIS_UNMODIFIED
See Also:
Constant Field Values

FLAG_ARGUMENTS_UNMODIFIED

public static final int FLAG_ARGUMENTS_UNMODIFIED
See Also:
Constant Field Values

FLAG_NO_THROWS

public static final int FLAG_NO_THROWS
See Also:
Constant Field Values

FLAG_LOCAL_RESULTS

public static final int FLAG_LOCAL_RESULTS
See Also:
Constant Field Values

SIDE_EFFECTS_FLAGS_MASK

public static final int SIDE_EFFECTS_FLAGS_MASK
See Also:
Constant Field Values

SIDE_EFFECTS_ALL

public static final int SIDE_EFFECTS_ALL
See Also:
Constant Field Values

NO_SIDE_EFFECTS

public static final int NO_SIDE_EFFECTS
See Also:
Constant Field Values
Constructor Detail

Node

public Node(int nodeType)

Node

public Node(int nodeType,
            Node child)

Node

public Node(int nodeType,
            Node left,
            Node right)

Node

public Node(int nodeType,
            Node left,
            Node mid,
            Node right)

Node

public Node(int nodeType,
            Node left,
            Node mid,
            Node mid2,
            Node right)

Node

public Node(int nodeType,
            int lineno,
            int charno)

Node

public Node(int nodeType,
            Node child,
            int lineno,
            int charno)

Node

public Node(int nodeType,
            Node left,
            Node right,
            int lineno,
            int charno)

Node

public Node(int nodeType,
            Node left,
            Node mid,
            Node right,
            int lineno,
            int charno)

Node

public Node(int nodeType,
            Node left,
            Node mid,
            Node mid2,
            Node right,
            int lineno,
            int charno)

Node

public Node(int nodeType,
            Node[] children,
            int lineno,
            int charno)

Node

public Node(int nodeType,
            Node[] children)
Method Detail

newNumber

public static Node newNumber(double number)

newNumber

public static Node newNumber(double number,
                             int lineno,
                             int charno)

newString

public static Node newString(String str)

newString

public static Node newString(int type,
                             String str)

newString

public static Node newString(String str,
                             int lineno,
                             int charno)

newString

public static Node newString(int type,
                             String str,
                             int lineno,
                             int charno)

getType

public int getType()

setType

public void setType(int type)

hasChildren

public boolean hasChildren()

getFirstChild

public Node getFirstChild()

getLastChild

public Node getLastChild()

getNext

public Node getNext()

getChildBefore

public Node getChildBefore(Node child)

getChildAtIndex

public Node getChildAtIndex(int i)

getIndexOfChild

public int getIndexOfChild(Node child)

getLastSibling

public Node getLastSibling()

addChildToFront

public void addChildToFront(Node child)

addChildToBack

public void addChildToBack(Node child)

addChildrenToFront

public void addChildrenToFront(Node children)

addChildrenToBack

public void addChildrenToBack(Node children)

addChildBefore

public void addChildBefore(Node newChild,
                           Node node)
Add 'child' before 'node'.


addChildAfter

public void addChildAfter(Node newChild,
                          Node node)
Add 'child' after 'node'.


addChildrenAfter

public void addChildrenAfter(Node children,
                             Node node)
Add all children after 'node'.


removeChild

public void removeChild(Node child)
Detach a child from its parent and siblings.


replaceChild

public void replaceChild(Node child,
                         Node newChild)
Detaches child from Node and replaces it with newChild.


replaceChildAfter

public void replaceChildAfter(Node prevChild,
                              Node newChild)

clonePropsFrom

public Node clonePropsFrom(Node other)
Clone the properties from the provided node without copying the property object. The recieving node may not have any existing properties.

Parameters:
other - The node to clone properties from.
Returns:
this node.

removeProp

public void removeProp(int propType)

getProp

public Object getProp(int propType)

getBooleanProp

public boolean getBooleanProp(int propType)

getIntProp

public int getIntProp(int propType)
Returns the integer value for the property, or 0 if the property is not defined.


getExistingIntProp

public int getExistingIntProp(int propType)

putProp

public void putProp(int propType,
                    Object value)

putBooleanProp

public void putBooleanProp(int propType,
                           boolean value)

putIntProp

public void putIntProp(int propType,
                       int value)

getDouble

public double getDouble()
                 throws UnsupportedOperationException
Can only be called when getType() == TokenStream.NUMBER

Throws:
UnsupportedOperationException

setDouble

public void setDouble(double s)
               throws UnsupportedOperationException
Can only be called when getType() == TokenStream.NUMBER

Throws:
UnsupportedOperationException

getString

public String getString()
                 throws UnsupportedOperationException
Can only be called when node has String context.

Throws:
UnsupportedOperationException

setString

public void setString(String s)
               throws UnsupportedOperationException
Can only be called when node has String context.

Throws:
UnsupportedOperationException

toString

public String toString()
Overrides:
toString in class Object

toString

public String toString(boolean printSource,
                       boolean printAnnotations,
                       boolean printType)

toStringTree

public String toStringTree()

appendStringTree

public void appendStringTree(Appendable appendable)
                      throws IOException
Throws:
IOException

setStaticSourceFile

public void setStaticSourceFile(StaticSourceFile file)

setSourceFileForTesting

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


getSourceFileName

public String getSourceFileName()

getStaticSourceFile

public StaticSourceFile getStaticSourceFile()
Returns the source file associated with this input. May be null


setInputId

public void setInputId(InputId inputId)
Parameters:
inputId -

getInputId

public InputId getInputId()
Returns:
The Id of the CompilerInput associated with this Node.

isFromExterns

public boolean isFromExterns()

getLength

public int getLength()

setLength

public void setLength(int length)

getLineno

public int getLineno()

getCharno

public int getCharno()

getSourceOffset

public int getSourceOffset()

getSourcePosition

public int getSourcePosition()

setLineno

public void setLineno(int lineno)

setCharno

public void setCharno(int charno)

setSourceEncodedPosition

public void setSourceEncodedPosition(int sourcePosition)

setSourceEncodedPositionForTree

public void setSourceEncodedPositionForTree(int sourcePosition)

mergeLineCharNo

protected static int mergeLineCharNo(int lineno,
                                     int charno)
Merges the line number and character number in one integer. The Character number takes the first 12 bits and the line number takes the rest. If the character number is greater than 212-1 it is adjusted to 212-1.


extractLineno

protected static int extractLineno(int lineCharNo)
Extracts the line number and character number from a merged line char number (see mergeLineCharNo(int, int)).


extractCharno

protected static int extractCharno(int lineCharNo)
Extracts the character number and character number from a merged line char number (see mergeLineCharNo(int, int)).


children

public Iterable<Node> children()

Return an iterable object that iterates over this nodes's children. The iterator does not support the optional operation Iterator.remove().

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

Node n = ...;
 for (Node child : n.children()) { ...


siblings

public Iterable<Node> siblings()

Return an iterable object that iterates over this nodes's siblings. The iterator does not support the optional operation Iterator.remove().

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

Node n = ...;
 for (Node sibling : n.siblings()) { ...


getParent

public Node getParent()

getAncestor

public Node getAncestor(int level)
Gets the ancestor node relative to this.

Parameters:
level - 0 = this, 1 = the parent, etc.

getAncestors

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


hasOneChild

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

hasMoreThanOneChild

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

getChildCount

public int getChildCount()

hasChild

public boolean hasChild(Node child)

checkTreeEquals

public String checkTreeEquals(Node node2)
Checks if the subtree under this node is the same as another subtree. Returns null if it's equal, or a message describing the differences.


isEquivalentTo

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


isEquivalentToTyped

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


getQualifiedName

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

isQualifiedName

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


isUnscopedQualifiedName

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


detachFromParent

public Node detachFromParent()
Removes this node from its parent. Equivalent to: node.getParent().removeChild();


removeFirstChild

public Node removeFirstChild()
Removes the first child of Node. Equivalent to: node.removeChild(node.getFirstChild());

Returns:
The removed Node.

removeChildren

public Node removeChildren()
Returns:
A Node that is the head of the list of children.

detachChildren

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


removeChildAfter

public Node removeChildAfter(Node prev)

cloneNode

public Node cloneNode()
Returns:
A detached clone of the Node, specifically excluding its children.

cloneTree

public Node cloneTree()
Returns:
A detached clone of the Node and all its children.

copyInformationFrom

public Node copyInformationFrom(Node other)
Copies source file and name information from the other node given to the current node. Used for maintaining debug information across node append and remove operations.

Returns:
this

copyInformationFromForTree

public Node copyInformationFromForTree(Node other)
Copies source file and name information from the other node to the entire tree rooted at this node.

Returns:
this

useSourceInfoFrom

public Node useSourceInfoFrom(Node other)
Overwrite all the source information in this node with that of other.


srcref

public Node srcref(Node other)

useSourceInfoFromForTree

public Node useSourceInfoFromForTree(Node other)
Overwrite all the source information in this node and its subtree with that of other.


srcrefTree

public Node srcrefTree(Node other)

useSourceInfoIfMissingFrom

public Node useSourceInfoIfMissingFrom(Node other)
Overwrite all the source information in this node with that of other iff the source info is missing.


useSourceInfoIfMissingFromForTree

public Node useSourceInfoIfMissingFromForTree(Node other)
Overwrite all the source information in this node and its subtree with that of other iff the source info is missing.


getJSType

public JSType getJSType()

setJSType

public void setJSType(JSType jsType)

getJsDocBuilderForNode

public Node.FileLevelJsDocBuilder getJsDocBuilderForNode()

getJSDocInfo

public JSDocInfo getJSDocInfo()
Get the JSDocInfo attached to this node.

Returns:
the information or null if no JSDoc is attached to this node

setJSDocInfo

public void setJSDocInfo(JSDocInfo info)
Sets the JSDocInfo attached to this node.


setVarArgs

public void setVarArgs(boolean varArgs)
Sets whether this node is a variable length argument node. This method is meaningful only on Token.NAME nodes used to define a Token.FUNCTION's argument list.


isVarArgs

public boolean isVarArgs()
Returns whether this node is a variable length argument node. This method's return value is meaningful only on Token.NAME nodes used to define a Token.FUNCTION's argument list.


setOptionalArg

public void setOptionalArg(boolean optionalArg)
Sets whether this node is an optional argument node. This method is meaningful only on Token.NAME nodes used to define a Token.FUNCTION's argument list.


isOptionalArg

public boolean isOptionalArg()
Returns whether this node is an optional argument node. This method's return value is meaningful only on Token.NAME nodes used to define a Token.FUNCTION's argument list.


setIsSyntheticBlock

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


isSyntheticBlock

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


setDirectives

public void setDirectives(Set<String> val)
Sets the ES5 directives on this node.


getDirectives

public Set<String> getDirectives()
Returns the set of ES5 directives for this node.


addSuppression

public void addSuppression(String warning)
Adds a warning to be suppressed. This is indistinguishable from having a @suppress tag in the code.


setWasEmptyNode

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


wasEmptyNode

public boolean wasEmptyNode()
Returns whether this is a synthetic block that should not be considered a real source block.


setSideEffectFlags

public 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 void setSideEffectFlags(Node.SideEffectFlags flags)

getSideEffectFlags

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


isOnlyModifiesThisCall

public boolean isOnlyModifiesThisCall()
Returns:
Whether the only side-effect is "modifies this"

isNoSideEffectsCall

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


isLocalResultCall

public boolean isLocalResultCall()
Returns true if this node is a function or constructor call that returns a primitive or a local object (an object that has no other references).


isQuotedString

public boolean isQuotedString()
This should only be called for STRING nodes children of OBJECTLIT.


setQuotedString

public void setQuotedString()
This should only be called for STRING nodes children of OBJECTLIT.


isAdd

public boolean isAdd()
AST type check methods


isAnd

public boolean isAnd()

isArrayLit

public boolean isArrayLit()

isAssign

public boolean isAssign()

isAssignAdd

public boolean isAssignAdd()

isBlock

public boolean isBlock()

isBreak

public boolean isBreak()

isCall

public boolean isCall()

isCase

public boolean isCase()

isCatch

public boolean isCatch()

isComma

public boolean isComma()

isContinue

public boolean isContinue()

isDebugger

public boolean isDebugger()

isDec

public boolean isDec()

isDefaultCase

public boolean isDefaultCase()

isDelProp

public boolean isDelProp()

isDo

public boolean isDo()

isEmpty

public boolean isEmpty()

isExprResult

public boolean isExprResult()

isFalse

public boolean isFalse()

isFor

public boolean isFor()

isFunction

public boolean isFunction()

isGetterDef

public boolean isGetterDef()

isGetElem

public boolean isGetElem()

isGetProp

public boolean isGetProp()

isHook

public boolean isHook()

isIf

public boolean isIf()

isIn

public boolean isIn()

isInc

public boolean isInc()

isInstanceOf

public boolean isInstanceOf()

isLabel

public boolean isLabel()

isLabelName

public boolean isLabelName()

isName

public boolean isName()

isNE

public boolean isNE()

isNew

public boolean isNew()

isNot

public boolean isNot()

isNull

public boolean isNull()

isNumber

public boolean isNumber()

isObjectLit

public boolean isObjectLit()

isOr

public boolean isOr()

isParamList

public boolean isParamList()

isRegExp

public boolean isRegExp()

isReturn

public boolean isReturn()

isScript

public boolean isScript()

isSetterDef

public boolean isSetterDef()

isString

public boolean isString()

isSwitch

public boolean isSwitch()

isThis

public boolean isThis()

isThrow

public boolean isThrow()

isTrue

public boolean isTrue()

isTry

public boolean isTry()

isTypeOf

public boolean isTypeOf()

isVar

public boolean isVar()

isVoid

public boolean isVoid()

isWhile

public boolean isWhile()

isWith

public boolean isWith()