org.mozilla.javascript.ast

## Class UnaryExpression

- java.lang.Object
- - org.mozilla.javascript.Node
  - - org.mozilla.javascript.ast.AstNode
    - - org.mozilla.javascript.ast.UnaryExpression

- All Implemented Interfaces:
    java.lang.Comparable<AstNode>, java.lang.Iterable<Node>

      public class UnaryExpression
      extends AstNode

  AST node representing unary operators such as `++`, `~`, `typeof` and `delete`. The type field is set to the appropriate Token type for the operator. The node length spans from the operator to the end of the operand (for prefix operators) or from the start of the operand to the operator (for postfix).

  The `default xml namespace = &lt;expr&gt;` statement in E4X (JavaScript 1.6) is represented as a `UnaryExpression` of node type `Token.DEFAULTNAMESPACE`, wrapped with an `ExpressionStatement`.

- - ### 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.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
    `UnaryExpression()`
    `UnaryExpression(int pos)`
    `UnaryExpression(int pos, int len)` Constructs a new postfix UnaryExpression
    `UnaryExpression(int operator, int operatorPosition, AstNode operand)` Constructs a new prefix UnaryExpression.
    `UnaryExpression(int operator, int operatorPosition, AstNode operand, boolean postFix)` Constructs a new UnaryExpression with the specified operator and operand.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `AstNode` | `getOperand()`
    `int` | `getOperator()` Returns operator token – alias for `Node.getType()`
    `boolean` | `isPostfix()` Returns whether the operator is postfix
    `boolean` | `isPrefix()` Returns whether the operator is prefix
    `void` | `setIsPostfix(boolean isPostfix)` Sets whether the operator is postfix
    `void` | `setOperand(AstNode operand)` Sets the operand, and sets its parent to be this node.
    `void` | `setOperator(int operator)` Sets operator – same as `Node.setType(int)`, but throws an exception if the operator is invalid
    `java.lang.String` | `toSource(int depth)` Emits source code for this node.
    `void` | `visit(NodeVisitor v)` Visits this node, then the operand.

    - ### 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`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### UnaryExpression

          public UnaryExpression()

    - #### UnaryExpression

          public UnaryExpression(int pos)

    - #### UnaryExpression

          public UnaryExpression(int pos,
                                 int len)

      Constructs a new postfix UnaryExpression

    - #### UnaryExpression

          public UnaryExpression(int operator,
                                 int operatorPosition,
                                 AstNode operand)

      Constructs a new prefix UnaryExpression.

    - #### UnaryExpression

          public UnaryExpression(int operator,
                                 int operatorPosition,
                                 AstNode operand,
                                 boolean postFix)

      Constructs a new UnaryExpression with the specified operator and operand. It sets the parent of the operand, and sets its own bounds to encompass the operator and operand.
      Parameters:
        `operator` - the node type
        `operatorPosition` - the absolute position of the operator.
        `operand` - the operand expression
        `postFix` - true if the operator follows the operand. Int
      Throws:
        `IllegalArgumentException}` - if `operand` is `null`

  - ### Method Detail

    - #### getOperator

          public int getOperator()

      Returns operator token – alias for `Node.getType()`

    - #### setOperator

          public void setOperator(int operator)

      Sets operator – same as `Node.setType(int)`, but throws an exception if the operator is invalid
      Throws:
        `java.lang.IllegalArgumentException` - if operator is not a valid Token code

    - #### getOperand

          public AstNode getOperand()

    - #### setOperand

          public void setOperand(AstNode operand)

      Sets the operand, and sets its parent to be this node.
      Throws:
        `IllegalArgumentException}` - if `operand` is `null`

    - #### isPostfix

          public boolean isPostfix()

      Returns whether the operator is postfix

    - #### isPrefix

          public boolean isPrefix()

      Returns whether the operator is prefix

    - #### setIsPostfix

          public void setIsPostfix(boolean isPostfix)

      Sets whether the operator is postfix

    - #### toSource

          public java.lang.String toSource(int depth)

      Description copied from class: `AstNode`
      Emits source code for this node. Callee is responsible for calling this function recursively on children, incrementing indent as appropriate.

      Note: if the parser was in error-recovery mode, some AST nodes may have `null` children that are expected to be non-`null` when no errors are present. In this situation, the behavior of the `toSource` method is undefined: `toSource` implementations may assume that the AST node is error-free, since it is intended to be invoked only at runtime after a successful parse.

      Specified by:
        `toSource` in class `AstNode`
      Parameters:
        `depth` - the current recursion depth, typically beginning at 0 when called on the root node.

    - #### visit

          public void visit(NodeVisitor v)

      Visits this node, then the operand.
      Specified by:
        `visit` in class `AstNode`
      Parameters:
        `v` - the object to call with this node and its children