org.mozilla.javascript.ast

## Class SwitchCase

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

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

      public class SwitchCase
      extends AstNode

  Switch-case AST node type. The switch case is always part of a switch statement. Node type is `Token.CASE`.

      CaseBlock :
              { [CaseClauses] }
              { [CaseClauses] DefaultClause [CaseClauses] }
       CaseClauses :
              CaseClause
              CaseClauses CaseClause
       CaseClause :
              case Expression : [StatementList]
       DefaultClause :
              default : [StatementList]

- - ### 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
    `SwitchCase()`
    `SwitchCase(int pos)`
    `SwitchCase(int pos, int len)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addStatement(AstNode statement)` Adds a statement to the end of the statement list.
    `AstNode` | `getExpression()` Returns the case expression, `null` for default case
    `java.util.List<AstNode>` | `getStatements()` Returns statement list, which may be `null`.
    `boolean` | `isDefault()` Return true if this is a default case.
    `void` | `setExpression(AstNode expression)` Sets the case expression, `null` for default case.
    `void` | `setStatements(java.util.List<AstNode> statements)` Sets statement list.
    `java.lang.String` | `toSource(int depth)` Emits source code for this node.
    `void` | `visit(NodeVisitor v)` Visits this node, then the case expression if present, then each statement (if any are specified).

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

    - #### SwitchCase

          public SwitchCase()

    - #### SwitchCase

          public SwitchCase(int pos)

    - #### SwitchCase

          public SwitchCase(int pos,
                    int len)

  - ### Method Detail

    - #### getExpression

          public AstNode getExpression()

      Returns the case expression, `null` for default case

    - #### setExpression

          public void setExpression(AstNode expression)

      Sets the case expression, `null` for default case. Note that for empty fall-through cases, they still have a case expression. In `case 0: case 1: break;` the first case has an `expression` that is a `NumberLiteral` with value `0`.

    - #### isDefault

          public boolean isDefault()

      Return true if this is a default case.
      Returns:
        true if `getExpression()` would return `null`

    - #### getStatements

          public java.util.List<AstNode> getStatements()

      Returns statement list, which may be `null`.

    - #### setStatements

          public void setStatements(java.util.List<AstNode> statements)

      Sets statement list. May be `null`. Replaces any existing statements. Each element in the list has its parent set to this node.

    - #### addStatement

          public void addStatement(AstNode statement)

      Adds a statement to the end of the statement list. Sets the parent of the new statement to this node, updates its start offset to be relative to this node, and sets the length of this node to include the new child.
      Parameters:
        `statement` - a child statement
      Throws:
        `IllegalArgumentException}` - if statement is `null`

    - #### 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 case expression if present, then each statement (if any are specified).
      Specified by:
        `visit` in class `AstNode`
      Parameters:
        `v` - the object to call with this node and its children