org.mozilla.javascript.ast
Class SwitchCase

java.lang.Object
  extended by org.mozilla.javascript.Node
      extended by org.mozilla.javascript.ast.AstNode
          extended by 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
SwitchCase()
           
SwitchCase(int pos)
           
SwitchCase(int pos, int len)
           
 
Method Summary
 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