com.google.caja.parser.js
Class FunctionConstructor

java.lang.Object
  extended by com.google.caja.parser.AbstractParseTreeNode
      extended by com.google.caja.parser.js.AbstractExpression
          extended by com.google.caja.parser.js.FunctionConstructor
All Implemented Interfaces:
Expression, JsonMLCompatible, NestedScope, MutableParseTreeNode, ParseTreeNode, MessagePart, Renderable, java.lang.Cloneable

public final class FunctionConstructor
extends AbstractExpression
implements NestedScope

Sometimes called a function literal or a closure, an expression that constructs a new function.

E.g. function () { return 0; }

Author:
mikesamuel@gmail.com

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.google.caja.parser.MutableParseTreeNode
MutableParseTreeNode.Mutation
 
Nested classes/interfaces inherited from interface com.google.caja.parser.ParseTreeNode
ParseTreeNode.ReflectiveCtor
 
Nested classes/interfaces inherited from interface com.google.caja.reporting.MessagePart
MessagePart.Factory
 
Nested classes/interfaces inherited from interface com.google.caja.parser.js.JsonMLCompatible
JsonMLCompatible.JsonMLBuilder
 
Field Summary
private  Block body
           
private  Identifier identifier
           
private  java.util.List<FormalParam> params
           
 
Fields inherited from interface com.google.caja.parser.ParseTreeNode
TAINTED
 
Constructor Summary
FunctionConstructor(FilePosition pos, Identifier identifier, java.util.List<FormalParam> params, Block body)
           
FunctionConstructor(FilePosition pos, java.lang.Void value, java.util.List<? extends ParseTreeNode> children)
           
 
Method Summary
protected  void childrenChanged()
          Called to perform consistency checks on the child list after changes have been made.
 java.lang.Boolean conditionResult()
          Returns the result of evaluating the expression in a boolean context or null if indeterminable.
 Block getBody()
           
 Identifier getIdentifier()
           
 java.lang.String getIdentifierName()
           
 java.util.List<FormalParam> getParams()
           
 java.lang.Object getValue()
           
 void render(RenderContext rc)
          Output the textual form to r.getOut().
(package private)  void renderActuals(RenderContext rc)
           
(package private)  void renderBody(RenderContext rc)
           
 com.google.javascript.jscomp.jsonml.JsonML toJsonML()
          Creates a JsonML representation of this AST.
 java.lang.String typeOf()
          null or the result of applying the typeof operator to the result of this expression.
 
Methods inherited from class com.google.caja.parser.js.AbstractExpression
fold, isLeftHandSide, makeRenderer, simplifyForSideEffect
 
Methods inherited from class com.google.caja.parser.AbstractParseTreeNode
acceptPostOrder, acceptPreOrder, appendChild, children, childrenAs, childrenPart, clone, createMutation, equals, format, formatSelf, formatTree, formatTree, getAttributes, getComments, getFilePosition, hashCode, insertBefore, removeChild, replaceChild, setComments, setFilePosition, toString, toStringDeep, toStringDeep
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.google.caja.parser.MutableParseTreeNode
acceptPostOrder, acceptPreOrder, appendChild, createMutation, insertBefore, removeChild, replaceChild
 
Methods inherited from interface com.google.caja.parser.ParseTreeNode
children, clone, formatTree, getAttributes, getComments, getFilePosition
 
Methods inherited from interface com.google.caja.reporting.MessagePart
format
 

Field Detail

identifier

private Identifier identifier

params

private java.util.List<FormalParam> params

body

private Block body
Constructor Detail

FunctionConstructor

@ParseTreeNode.ReflectiveCtor
public FunctionConstructor(FilePosition pos,
                                                        java.lang.Void value,
                                                        java.util.List<? extends ParseTreeNode> children)
Parameters:
value - unused. This ctor is provided for reflection.

FunctionConstructor

public FunctionConstructor(FilePosition pos,
                           Identifier identifier,
                           java.util.List<FormalParam> params,
                           Block body)
Method Detail

childrenChanged

protected void childrenChanged()
Description copied from class: AbstractParseTreeNode
Called to perform consistency checks on the child list after changes have been made. This can be overridden to do additional checks by subclasses, and to update derived state, but all subclasses must chain to super after performing their own checks.

This method may throw any RuntimeException on an invalid child. TODO(mikesamuel): maybe reliably throw an exception type, that includes information about the troublesome node.

Overrides:
childrenChanged in class AbstractParseTreeNode

getParams

public java.util.List<FormalParam> getParams()

getBody

public Block getBody()

getIdentifier

public Identifier getIdentifier()

getIdentifierName

public java.lang.String getIdentifierName()

getValue

public java.lang.Object getValue()
Specified by:
getValue in interface ParseTreeNode
Specified by:
getValue in class AbstractParseTreeNode
Returns:
null or a value with subclass specific meaning which encapsulates all parsed state separate from the children.

conditionResult

public java.lang.Boolean conditionResult()
Description copied from interface: Expression
Returns the result of evaluating the expression in a boolean context or null if indeterminable. This result is valid assuming that the expression does not throw an exception. If the expression provably always throws an exception, then it may return any result.

Specified by:
conditionResult in interface Expression
Overrides:
conditionResult in class AbstractExpression

render

public void render(RenderContext rc)
Description copied from interface: Renderable
Output the textual form to r.getOut().

Specified by:
render in interface Renderable

renderActuals

void renderActuals(RenderContext rc)

renderBody

void renderBody(RenderContext rc)

typeOf

public java.lang.String typeOf()
Description copied from interface: Expression
null or the result of applying the typeof operator to the result of this expression.

Specified by:
typeOf in interface Expression
Returns:
if the expression yields a result with the same typeof in all environments in which it returns normally, then returns the result of applying the typeof operator to the result. null if the type cannot be determined. This method is conservative, so it may return null where it is possible to prove a bound.

toJsonML

public com.google.javascript.jscomp.jsonml.JsonML toJsonML()
Description copied from interface: JsonMLCompatible
Creates a JsonML representation of this AST.

Specified by:
toJsonML in interface JsonMLCompatible


Copyright (C) 2008 Google Inc.
Licensed under the Apache License, Version 2.0