ScriptNode (Rhino)
Date: 2018-10-23

org.mozilla.javascript.ast

## Class ScriptNode

- java.lang.Object
- - org.mozilla.javascript.Node
  - - org.mozilla.javascript.ast.AstNode
    - - org.mozilla.javascript.ast.Jump
      - - org.mozilla.javascript.ast.Scope
        - - org.mozilla.javascript.ast.ScriptNode

- All Implemented Interfaces:
    java.lang.Comparable<AstNode>, java.lang.Iterable<Node>
  Direct Known Subclasses:
    AstRoot, FunctionNode

      public class ScriptNode
      extends Scope

  Base type for `AstRoot` and `FunctionNode` nodes, which need to collect much of the same information.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.mozilla.javascript.ast.AstNode

      `AstNode.DebugPrintVisitor, AstNode.PositionComparator`

    - ### Nested classes/interfaces inherited from class org.mozilla.javascript.Node

      `Node.NodeIterator`

  - ### Field Summary

    - ### Fields inherited from class org.mozilla.javascript.ast.Scope

      `parentScope, symbolTable, top`

    - ### Fields inherited from class org.mozilla.javascript.ast.Jump

      `target`

    - ### Fields inherited from class org.mozilla.javascript.ast.AstNode

      `length, parent, position`

    - ### Fields inherited from class org.mozilla.javascript.Node

      `ARROW_FUNCTION_PROP, ATTRIBUTE_FLAG, BOTH, CASEARRAY_PROP, CATCH_SCOPE_PROP, CONTROL_BLOCK_PROP, DECR_FLAG, DESCENDANTS_FLAG, DESTRUCTURING_ARRAY_LENGTH, DESTRUCTURING_NAMES, DESTRUCTURING_PARAMS, DESTRUCTURING_SHORTHAND, DIRECTCALL_PROP, END_DROPS_OFF, END_RETURNS, END_RETURNS_VALUE, END_UNREACHED, END_YIELDS, EXPRESSION_CLOSURE_PROP, first, FUNCTION_PROP, GENERATOR_END_PROP, INCRDECR_PROP, ISNUMBER_PROP, JSDOC_PROP, LABEL_ID_PROP, last, LAST_PROP, LEFT, lineno, LOCAL_BLOCK_PROP, LOCAL_PROP, MEMBER_TYPE_PROP, NAME_PROP, next, NON_SPECIALCALL, OBJECT_IDS_PROP, PARENTHESIZED_PROP, POST_FLAG, PROPERTY_FLAG, propListHead, REGEXP_PROP, RIGHT, SKIP_INDEXES_PROP, SPECIALCALL_EVAL, SPECIALCALL_PROP, SPECIALCALL_WITH, TARGETBLOCK_PROP, type, VARIABLE_PROP`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ScriptNode()`
    `ScriptNode(int pos)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addFunction(FunctionNode fnNode)` Adds a `FunctionNode` to the functions table for codegen.
    `void` | `addRegExp(RegExpLiteral re)` Called by IRFactory to add a RegExp to the regexp table.
    `void` | `flattenSymbolTable(boolean flattenAllTables)` Assign every symbol a unique integer index.
    `int` | `getBaseLineno()`
    `java.lang.Object` | `getCompilerData()`
    `java.lang.String` | `getEncodedSource()` Returns a canonical version of the source for this script or function, for use in implementing the `Object.toSource` method of JavaScript objects.
    `int` | `getEncodedSourceEnd()` Returns the end offset of the encoded source.
    `int` | `getEncodedSourceStart()` Returns the start offset of the encoded source.
    `int` | `getEndLineno()`
    `int` | `getFunctionCount()`
    `FunctionNode` | `getFunctionNode(int i)`
    `java.util.List<FunctionNode>` | `getFunctions()`
    `int` | `getIndexForNameNode(Node nameNode)`
    `java.lang.String` | `getNextTempName()`
    `boolean[]` | `getParamAndVarConst()`
    `int` | `getParamAndVarCount()`
    `java.lang.String[]` | `getParamAndVarNames()`
    `int` | `getParamCount()`
    `java.lang.String` | `getParamOrVarName(int index)`
    `int` | `getRegexpCount()`
    `java.lang.String` | `getRegexpFlags(int index)`
    `java.lang.String` | `getRegexpString(int index)`
    `java.lang.String` | `getSourceName()` Returns the URI, path or descriptive text indicating the origin of this script's source code.
    `java.util.List<Symbol>` | `getSymbols()`
    `boolean` | `isInStrictMode()`
    `void` | `setBaseLineno(int lineno)` Sets base (starting) line number for this script or function.
    `void` | `setCompilerData(java.lang.Object data)`
    `void` | `setEncodedSource(java.lang.String encodedSource)` Used by the code generator.
    `void` | `setEncodedSourceBounds(int start, int end)` Used by code generator.
    `void` | `setEncodedSourceEnd(int end)` Used by code generator.
    `void` | `setEncodedSourceStart(int start)` Used by code generator.
    `void` | `setEndLineno(int lineno)`
    `void` | `setInStrictMode(boolean inStrictMode)`
    `void` | `setSourceName(java.lang.String sourceName)` Sets the URI, path or descriptive text indicating the origin of this script's source code.
    `void` | `setSymbols(java.util.List<Symbol> symbols)`
    `void` | `visit(NodeVisitor v)` Jumps are only used directly during code generation, and do not support this interface.

    - ### Methods inherited from class org.mozilla.javascript.ast.Scope

      `addChildScope, clearParentScope, getChildScopes, getDefiningScope, getParentScope, getStatements, getSymbol, getSymbolTable, getTop, joinScopes, putSymbol, replaceWith, setParentScope, setSymbolTable, setTop, splitScope, toSource`

    - ### Methods inherited from class org.mozilla.javascript.ast.Jump

      `getContinue, getDefault, getFinally, getJumpStatement, getLoop, setContinue, setDefault, setFinally, setJumpStatement, setLoop`

    - ### Methods inherited from class org.mozilla.javascript.ast.AstNode

      `addChild, assertNotNull, codeBug, compareTo, debugPrint, depth, getAbsolutePosition, getAstRoot, getEnclosingFunction, getEnclosingScope, getLength, getLineno, getParent, getPosition, hasSideEffects, makeIndent, operatorToString, printList, setBounds, setLength, setParent, setPosition, setRelative, shortName, toSource`

    - ### Methods inherited from class org.mozilla.javascript.Node

      `addChildAfter, addChildBefore, addChildrenToBack, addChildrenToFront, addChildToBack, addChildToFront, getChildBefore, getDouble, getExistingIntProp, getFirstChild, getIntProp, getJsDoc, getJsDocNode, getLastChild, getLastSibling, getNext, getProp, getScope, getString, getType, hasChildren, hasConsistentReturnUsage, iterator, labelId, labelId, newNumber, newString, newString, newTarget, putIntProp, putProp, removeChild, removeChildren, removeProp, replaceChild, replaceChildAfter, resetTargets, setDouble, setJsDocNode, setLineno, setScope, setString, setType, toString, toStringTree`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### ScriptNode

          public ScriptNode()

    - #### ScriptNode

          public ScriptNode(int pos)

  - ### Method Detail

    - #### getSourceName

          public java.lang.String getSourceName()

      Returns the URI, path or descriptive text indicating the origin of this script's source code.

    - #### setSourceName

          public void setSourceName(java.lang.String sourceName)

      Sets the URI, path or descriptive text indicating the origin of this script's source code.

    - #### getEncodedSourceStart

          public int getEncodedSourceStart()

      Returns the start offset of the encoded source. Only valid if `getEncodedSource()` returns non-`null`.

    - #### setEncodedSourceStart

          public void setEncodedSourceStart(int start)

      Used by code generator.
      See Also:
        `getEncodedSource()`

    - #### getEncodedSourceEnd

          public int getEncodedSourceEnd()

      Returns the end offset of the encoded source. Only valid if `getEncodedSource()` returns non-`null`.

    - #### setEncodedSourceEnd

          public void setEncodedSourceEnd(int end)

      Used by code generator.
      See Also:
        `getEncodedSource()`

    - #### setEncodedSourceBounds

          public void setEncodedSourceBounds(int start,
                                    int end)

      Used by code generator.
      See Also:
        `getEncodedSource()`

    - #### setEncodedSource

          public void setEncodedSource(java.lang.String encodedSource)

      Used by the code generator.
      See Also:
        `getEncodedSource()`

    - #### getEncodedSource

          public java.lang.String getEncodedSource()

      Returns a canonical version of the source for this script or function, for use in implementing the `Object.toSource` method of JavaScript objects. This source encoding is only recorded during code generation. It must be passed back to `Decompiler.decompile(java.lang.String, int, org.mozilla.javascript.UintMap)` to construct the human-readable source string.

      Given a parsed AST, you can always convert it to source code using the `AstNode.toSource(int)` method, although it's not guaranteed to produce exactly the same results as `Object.toSource` with respect to formatting, parenthesization and other details.

      Returns:
        the encoded source, or `null` if it was not recorded.

    - #### getBaseLineno

          public int getBaseLineno()

    - #### setBaseLineno

          public void setBaseLineno(int lineno)

      Sets base (starting) line number for this script or function. This is a one-time operation, and throws an exception if the line number has already been set.

    - #### getEndLineno

          public int getEndLineno()

    - #### setEndLineno

          public void setEndLineno(int lineno)

    - #### getFunctionCount

          public int getFunctionCount()

    - #### getFunctionNode

          public FunctionNode getFunctionNode(int i)

    - #### getFunctions

          public java.util.List<FunctionNode> getFunctions()

    - #### addFunction

          public int addFunction(FunctionNode fnNode)

      Adds a `FunctionNode` to the functions table for codegen. Does not set the parent of the node.
      Returns:
        the index of the function within its parent

    - #### getRegexpCount

          public int getRegexpCount()

    - #### getRegexpString

          public java.lang.String getRegexpString(int index)

    - #### getRegexpFlags

          public java.lang.String getRegexpFlags(int index)

    - #### addRegExp

          public void addRegExp(RegExpLiteral re)

      Called by IRFactory to add a RegExp to the regexp table.

    - #### getIndexForNameNode

          public int getIndexForNameNode(Node nameNode)

    - #### getParamOrVarName

          public java.lang.String getParamOrVarName(int index)

    - #### getParamCount

          public int getParamCount()

    - #### getParamAndVarCount

          public int getParamAndVarCount()

    - #### getParamAndVarNames

          public java.lang.String[] getParamAndVarNames()

    - #### getParamAndVarConst

          public boolean[] getParamAndVarConst()

    - #### getSymbols

          public java.util.List<Symbol> getSymbols()

    - #### setSymbols

          public void setSymbols(java.util.List<Symbol> symbols)

    - #### flattenSymbolTable

          public void flattenSymbolTable(boolean flattenAllTables)

      Assign every symbol a unique integer index. Generate arrays of variable names and constness that can be indexed by those indices.
      Parameters:
        `flattenAllTables` - if true, flatten all symbol tables, included nested block scope symbol tables. If false, just flatten the script's or function's symbol table.

    - #### getCompilerData

          public java.lang.Object getCompilerData()

    - #### setCompilerData

          public void setCompilerData(java.lang.Object data)

    - #### getNextTempName

          public java.lang.String getNextTempName()

    - #### setInStrictMode

          public void setInStrictMode(boolean inStrictMode)

    - #### isInStrictMode

          public boolean isInStrictMode()

    - #### visit

          public void visit(NodeVisitor v)

      Description copied from class: `Jump`
      Jumps are only used directly during code generation, and do not support this interface.
      Overrides:
        `visit` in class `Scope`
      Parameters:
        `v` - the object to call with this node and its children