net.sourceforge.htmlunit.corejs.javascript.ast
Class ObjectProperty

java.lang.Object
  extended by net.sourceforge.htmlunit.corejs.javascript.Node
      extended by net.sourceforge.htmlunit.corejs.javascript.ast.AstNode
          extended by net.sourceforge.htmlunit.corejs.javascript.ast.InfixExpression
              extended by net.sourceforge.htmlunit.corejs.javascript.ast.ObjectProperty
All Implemented Interfaces:
java.lang.Comparable<AstNode>, java.lang.Iterable<Node>

public class ObjectProperty
extends InfixExpression

AST node for a single name:value entry in an Object literal. For simple entries, the node type is Token.COLON, and the name (left side expression) is either a Name, a StringLiteral or a NumberLiteral.

This node type is also used for getter/setter properties in object literals. In this case the node bounds include the "get" or "set" keyword. The left-hand expression in this case is always a Name, and the overall node type is Token.GET or Token.SET, as appropriate.

The operatorPosition field is meaningless if the node is a getter or setter.

 ObjectProperty :
       PropertyName : AssignmentExpression
 PropertyName :
       Identifier
       StringLiteral
       NumberLiteral
 


Nested Class Summary
 
Nested classes/interfaces inherited from class net.sourceforge.htmlunit.corejs.javascript.ast.AstNode
AstNode.DebugPrintVisitor, AstNode.PositionComparator
 
Nested classes/interfaces inherited from class net.sourceforge.htmlunit.corejs.javascript.Node
Node.NodeIterator
 
Field Summary
 
Fields inherited from class net.sourceforge.htmlunit.corejs.javascript.ast.InfixExpression
left, operatorPosition, right
 
Fields inherited from class net.sourceforge.htmlunit.corejs.javascript.ast.AstNode
length, parent, position
 
Fields inherited from class net.sourceforge.htmlunit.corejs.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
ObjectProperty()
           
ObjectProperty(int pos)
           
ObjectProperty(int pos, int len)
           
 
Method Summary
 boolean isGetter()
          Returns true if this is a getter function.
 boolean isSetter()
          Returns true if this is a setter function.
 void setIsGetter()
          Marks this node as a "getter" property.
 void setIsSetter()
          Marks this node as a "setter" property.
 void setNodeType(int nodeType)
          Sets the node type.
 java.lang.String toSource(int depth)
          Emits source code for this node.
 
Methods inherited from class net.sourceforge.htmlunit.corejs.javascript.ast.InfixExpression
getLeft, getOperator, getOperatorPosition, getRight, hasSideEffects, setLeft, setLeftAndRight, setOperator, setOperatorPosition, setRight, visit
 
Methods inherited from class net.sourceforge.htmlunit.corejs.javascript.ast.AstNode
addChild, assertNotNull, codeBug, compareTo, debugPrint, depth, getAbsolutePosition, getAstRoot, getEnclosingFunction, getEnclosingScope, getLength, getLineno, getParent, getPosition, makeIndent, operatorToString, printList, setBounds, setLength, setParent, setPosition, setRelative, shortName, toSource
 
Methods inherited from class net.sourceforge.htmlunit.corejs.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

ObjectProperty

public ObjectProperty()

ObjectProperty

public ObjectProperty(int pos)

ObjectProperty

public ObjectProperty(int pos,
                      int len)
Method Detail

setNodeType

public void setNodeType(int nodeType)
Sets the node type. Must be one of Token.COLON, Token.GET , or Token.SET.

Throws:
java.lang.IllegalArgumentException - if nodeType is invalid

setIsGetter

public void setIsGetter()
Marks this node as a "getter" property.


isGetter

public boolean isGetter()
Returns true if this is a getter function.


setIsSetter

public void setIsSetter()
Marks this node as a "setter" property.


isSetter

public boolean isSetter()
Returns true if this is a setter function.


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.

Overrides:
toSource in class InfixExpression
Parameters:
depth - the current recursion depth, typically beginning at 0 when called on the root node.