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

`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

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

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