com.google.dart.compiler.backend.js
Class JsFirstExpressionVisitor

java.lang.Object
  extended by com.google.dart.compiler.backend.js.ast.JsVisitor
      extended by com.google.dart.compiler.backend.js.ast.RecursiveJsVisitor
          extended by com.google.dart.compiler.backend.js.JsFirstExpressionVisitor

public class JsFirstExpressionVisitor
extends RecursiveJsVisitor

Determines if an expression statement needs to be surrounded by parentheses.

The statement or the left-most expression needs to be surrounded by parentheses if the left-most expression is an object literal or a function object. Function declarations do not need parentheses.

For example the following require parentheses:

The following do not require parentheses:


Method Summary
static boolean exec(JsExpressionStatement statement)
           
 void visitArray(JsArrayLiteral x)
           
 void visitArrayAccess(JsArrayAccess x)
           
 void visitBinaryExpression(JsBinaryOperation x)
           
 void visitConditional(JsConditional x)
           
 void visitFunction(JsFunction x)
           
 void visitInvocation(JsInvocation invocation)
           
 void visitNameRef(JsNameRef nameRef)
           
 void visitNew(JsNew x)
           
 void visitObjectLiteral(JsObjectLiteral x)
           
 void visitPostfixOperation(JsPostfixOperation x)
           
 void visitPrefixOperation(JsPrefixOperation x)
           
 
Methods inherited from class com.google.dart.compiler.backend.js.ast.RecursiveJsVisitor
visitElement
 
Methods inherited from class com.google.dart.compiler.backend.js.ast.JsVisitor
accept, acceptList, acceptLvalue, acceptWithInsertRemove, visit, visit, visitBlock, visitBoolean, visitBreak, visitCase, visitCatch, visitContinue, visitDebugger, visitDefault, visitDocComment, visitDouble, visitDoWhile, visitEmpty, visitExpressionStatement, visitFor, visitForIn, visitIf, visitInt, visitLabel, visitNull, visitParameter, visitProgram, visitProgramFragment, visitPropertyInitializer, visitRegExp, visitReturn, visitString, visitThis, visitThrow, visitTry, visitVars, visitWhile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

exec

public static boolean exec(JsExpressionStatement statement)

visitArrayAccess

public void visitArrayAccess(JsArrayAccess x)
Overrides:
visitArrayAccess in class JsVisitor

visitArray

public void visitArray(JsArrayLiteral x)
Overrides:
visitArray in class JsVisitor

visitBinaryExpression

public void visitBinaryExpression(JsBinaryOperation x)
Overrides:
visitBinaryExpression in class JsVisitor

visitConditional

public void visitConditional(JsConditional x)
Overrides:
visitConditional in class JsVisitor

visitFunction

public void visitFunction(JsFunction x)
Overrides:
visitFunction in class JsVisitor

visitInvocation

public void visitInvocation(JsInvocation invocation)
Overrides:
visitInvocation in class JsVisitor

visitNameRef

public void visitNameRef(JsNameRef nameRef)
Overrides:
visitNameRef in class JsVisitor

visitNew

public void visitNew(JsNew x)
Overrides:
visitNew in class JsVisitor

visitObjectLiteral

public void visitObjectLiteral(JsObjectLiteral x)
Overrides:
visitObjectLiteral in class JsVisitor

visitPostfixOperation

public void visitPostfixOperation(JsPostfixOperation x)
Overrides:
visitPostfixOperation in class JsVisitor

visitPrefixOperation

public void visitPrefixOperation(JsPrefixOperation x)
Overrides:
visitPrefixOperation in class JsVisitor