simplify AST
This commit is contained in:
@@ -29,7 +29,7 @@ public class JsConstructExpressionVisitor extends RecursiveJsVisitor {
|
||||
* We only look at the array expression since the index has its own scope.
|
||||
*/
|
||||
@Override
|
||||
public void visitArrayAccess(JsArrayAccess x, JsContext ctx) {
|
||||
public void visitArrayAccess(JsArrayAccess x) {
|
||||
accept(x.getArrayExpression());
|
||||
}
|
||||
|
||||
@@ -37,25 +37,25 @@ public class JsConstructExpressionVisitor extends RecursiveJsVisitor {
|
||||
* Array literals have their own scoping.
|
||||
*/
|
||||
@Override
|
||||
public void visitArray(JsArrayLiteral x, JsContext ctx) {
|
||||
public void visitArray(JsArrayLiteral x) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Functions have their own scoping.
|
||||
*/
|
||||
@Override
|
||||
public void visitFunction(JsFunction x, JsContext ctx) {
|
||||
public void visitFunction(JsFunction x) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInvocation(JsInvocation x, JsContext ctx) {
|
||||
public void visitInvocation(JsInvocation x) {
|
||||
containsInvocation = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNameRef(JsNameRef x, JsContext ctx) {
|
||||
if (!x.isLeaf()) {
|
||||
accept(x.getQualifier());
|
||||
public void visitNameRef(JsNameRef nameRef) {
|
||||
if (!nameRef.isLeaf()) {
|
||||
accept(nameRef.getQualifier());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,14 +63,14 @@ public class JsConstructExpressionVisitor extends RecursiveJsVisitor {
|
||||
* New constructs bind to the nearest set of parentheses.
|
||||
*/
|
||||
@Override
|
||||
public void visitNew(JsNew x, JsContext ctx) {
|
||||
public void visitNew(JsNew x) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Object literals have their own scope.
|
||||
*/
|
||||
@Override
|
||||
public void visitObjectLiteral(JsObjectLiteral x, JsContext ctx) {
|
||||
public void visitObjectLiteral(JsObjectLiteral x) {
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -49,56 +49,56 @@ public class JsFirstExpressionVisitor extends RecursiveJsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitArrayAccess(JsArrayAccess x, JsContext ctx) {
|
||||
public void visitArrayAccess(JsArrayAccess x) {
|
||||
accept(x.getArrayExpression());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitArray(JsArrayLiteral x, JsContext ctx) {
|
||||
public void visitArray(JsArrayLiteral x) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBinaryExpression(JsBinaryOperation x, JsContext ctx) {
|
||||
public void visitBinaryExpression(JsBinaryOperation x) {
|
||||
accept(x.getArg1());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitConditional(JsConditional x, JsContext ctx) {
|
||||
public void visitConditional(JsConditional x) {
|
||||
accept(x.getTestExpression());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFunction(JsFunction x, JsContext ctx) {
|
||||
public void visitFunction(JsFunction x) {
|
||||
needsParentheses = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInvocation(JsInvocation x, JsContext ctx) {
|
||||
public void visitInvocation(JsInvocation x) {
|
||||
accept(x.getQualifier());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNameRef(JsNameRef x, JsContext ctx) {
|
||||
if (!x.isLeaf()) {
|
||||
accept(x.getQualifier());
|
||||
public void visitNameRef(JsNameRef nameRef) {
|
||||
if (!nameRef.isLeaf()) {
|
||||
accept(nameRef.getQualifier());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNew(JsNew x, JsContext ctx) {
|
||||
public void visitNew(JsNew x) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitObjectLiteral(JsObjectLiteral x, JsContext ctx) {
|
||||
public void visitObjectLiteral(JsObjectLiteral x) {
|
||||
needsParentheses = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPostfixOperation(JsPostfixOperation x, JsContext ctx) {
|
||||
public void visitPostfixOperation(JsPostfixOperation x) {
|
||||
accept(x.getArg());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPrefixOperation(JsPrefixOperation x, JsContext ctx) {
|
||||
public void visitPrefixOperation(JsPrefixOperation x) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,43 +45,43 @@ class JsPrecedenceVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitArrayAccess(JsArrayAccess x, JsContext ctx) {
|
||||
public void visitArrayAccess(JsArrayAccess x) {
|
||||
answer = 16;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitArray(JsArrayLiteral x, JsContext ctx) {
|
||||
public void visitArray(JsArrayLiteral x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBinaryExpression(JsBinaryOperation x, JsContext ctx) {
|
||||
public void visitBinaryExpression(JsBinaryOperation x) {
|
||||
answer = x.getOperator().getPrecedence();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBoolean(JsLiteral.JsBooleanLiteral x, JsContext ctx) {
|
||||
public void visitBoolean(JsLiteral.JsBooleanLiteral x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitConditional(JsConditional x, JsContext ctx) {
|
||||
public void visitConditional(JsConditional x) {
|
||||
answer = 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFunction(JsFunction x, JsContext ctx) {
|
||||
public void visitFunction(JsFunction x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInvocation(JsInvocation x, JsContext ctx) {
|
||||
public void visitInvocation(JsInvocation x) {
|
||||
answer = 16;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNameRef(JsNameRef x, JsContext ctx) {
|
||||
if (x.isLeaf()) {
|
||||
public void visitNameRef(JsNameRef nameRef) {
|
||||
if (nameRef.isLeaf()) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
else {
|
||||
@@ -90,62 +90,62 @@ class JsPrecedenceVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNew(JsNew x, JsContext ctx) {
|
||||
public void visitNew(JsNew x) {
|
||||
answer = PRECEDENCE_NEW;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNull(JsNullLiteral x, JsContext ctx) {
|
||||
public void visitNull(JsNullLiteral x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInt(JsNumberLiteral.JsIntLiteral x, JsContext ctx) {
|
||||
public void visitInt(JsNumberLiteral.JsIntLiteral x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDouble(JsNumberLiteral.JsDoubleLiteral x, JsContext ctx) {
|
||||
public void visitDouble(JsNumberLiteral.JsDoubleLiteral x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitObjectLiteral(JsObjectLiteral x, JsContext ctx) {
|
||||
public void visitObjectLiteral(JsObjectLiteral x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPostfixOperation(JsPostfixOperation x, JsContext ctx) {
|
||||
public void visitPostfixOperation(JsPostfixOperation x) {
|
||||
answer = x.getOperator().getPrecedence();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPrefixOperation(JsPrefixOperation x, JsContext ctx) {
|
||||
public void visitPrefixOperation(JsPrefixOperation x) {
|
||||
answer = x.getOperator().getPrecedence();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPropertyInitializer(JsPropertyInitializer x, JsContext ctx) {
|
||||
public void visitPropertyInitializer(JsPropertyInitializer x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitRegExp(JsRegExp x, JsContext ctx) {
|
||||
public void visitRegExp(JsRegExp x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitString(JsStringLiteral x, JsContext ctx) {
|
||||
public void visitString(JsStringLiteral x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitThis(JsLiteral.JsThisRef x, JsContext ctx) {
|
||||
public void visitThis(JsLiteral.JsThisRef x) {
|
||||
answer = 17; // primary
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void visitElement(JsNode node, JsContext context) {
|
||||
protected void visitElement(JsNode node) {
|
||||
throw new RuntimeException("Only expressions have precedence.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,21 +34,21 @@ public class JsRequiresSemiVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFor(JsFor x, JsContext ctx) {
|
||||
public void visitFor(JsFor x) {
|
||||
if (x.getBody() instanceof JsEmpty) {
|
||||
needsSemicolon = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitForIn(JsForIn x, JsContext ctx) {
|
||||
public void visitForIn(JsForIn x) {
|
||||
if (x.getBody() instanceof JsEmpty) {
|
||||
needsSemicolon = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitIf(JsIf x, JsContext ctx) {
|
||||
public void visitIf(JsIf x) {
|
||||
JsStatement thenStmt = x.getThenStatement();
|
||||
JsStatement elseStmt = x.getElseStatement();
|
||||
JsStatement toCheck = thenStmt;
|
||||
@@ -65,14 +65,14 @@ public class JsRequiresSemiVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitLabel(JsLabel x, JsContext ctx) {
|
||||
public void visitLabel(JsLabel x) {
|
||||
if (x.getStatement() instanceof JsEmpty) {
|
||||
needsSemicolon = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitWhile(JsWhile x, JsContext ctx) {
|
||||
public void visitWhile(JsWhile x) {
|
||||
if (x.getBody() instanceof JsEmpty) {
|
||||
needsSemicolon = true;
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitArrayAccess(JsArrayAccess x, JsContext context) {
|
||||
public void visitArrayAccess(JsArrayAccess x) {
|
||||
printPair(x, x.getArrayExpression());
|
||||
leftSquare();
|
||||
accept(x.getIndexExpression());
|
||||
@@ -213,7 +213,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitArray(JsArrayLiteral x, JsContext ctx) {
|
||||
public void visitArray(JsArrayLiteral x) {
|
||||
leftSquare();
|
||||
printExpressions(x.getExpressions());
|
||||
rightSquare();
|
||||
@@ -232,7 +232,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBinaryExpression(JsBinaryOperation binaryOperation, JsContext context) {
|
||||
public void visitBinaryExpression(JsBinaryOperation binaryOperation) {
|
||||
JsBinaryOperator operator = binaryOperation.getOperator();
|
||||
JsExpression arg1 = binaryOperation.getArg1();
|
||||
boolean isExpressionEnclosed = parenPush(binaryOperation, arg1, !operator.isLeftAssociative());
|
||||
@@ -277,12 +277,12 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBlock(JsBlock x, JsContext ctx) {
|
||||
public void visitBlock(JsBlock x) {
|
||||
printJsBlock(x, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBoolean(JsLiteral.JsBooleanLiteral x, JsContext ctx) {
|
||||
public void visitBoolean(JsLiteral.JsBooleanLiteral x) {
|
||||
if (x.getValue()) {
|
||||
p.print(CHARS_TRUE);
|
||||
}
|
||||
@@ -292,13 +292,13 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBreak(JsBreak x, JsContext ctx) {
|
||||
public void visitBreak(JsBreak x) {
|
||||
p.print(CHARS_BREAK);
|
||||
continueOrBreakLabel(x);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitContinue(JsContinue x, JsContext ctx) {
|
||||
public void visitContinue(JsContinue x) {
|
||||
p.print(CHARS_CONTINUE);
|
||||
continueOrBreakLabel(x);
|
||||
}
|
||||
@@ -312,7 +312,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitCase(JsCase x, JsContext ctx) {
|
||||
public void visitCase(JsCase x) {
|
||||
p.print(CHARS_CASE);
|
||||
space();
|
||||
accept(x.getCaseExpression());
|
||||
@@ -337,7 +337,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitCatch(JsCatch x, JsContext ctx) {
|
||||
public void visitCatch(JsCatch x) {
|
||||
spaceOpt();
|
||||
p.print(CHARS_CATCH);
|
||||
spaceOpt();
|
||||
@@ -360,7 +360,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitConditional(JsConditional x, JsContext ctx) {
|
||||
public void visitConditional(JsConditional x) {
|
||||
// Associativity: for the then and else branches, it is safe to insert
|
||||
// another
|
||||
// ternary expression, but if the test expression is a ternary, it should
|
||||
@@ -388,12 +388,12 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDebugger(JsDebugger x, JsContext context) {
|
||||
public void visitDebugger(JsDebugger x) {
|
||||
p.print(CHARS_DEBUGGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDefault(JsDefault x, JsContext context) {
|
||||
public void visitDefault(JsDefault x) {
|
||||
p.print(CHARS_DEFAULT);
|
||||
_colon();
|
||||
|
||||
@@ -401,7 +401,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitWhile(JsWhile x, JsContext ctx) {
|
||||
public void visitWhile(JsWhile x) {
|
||||
_while();
|
||||
spaceOpt();
|
||||
leftParen();
|
||||
@@ -413,7 +413,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDoWhile(JsDoWhile x, JsContext context) {
|
||||
public void visitDoWhile(JsDoWhile x) {
|
||||
p.print(CHARS_DO);
|
||||
nestedPush(x.getBody());
|
||||
accept(x.getBody());
|
||||
@@ -434,11 +434,11 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitEmpty(JsEmpty x, JsContext ctx) {
|
||||
public void visitEmpty(JsEmpty x) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitExpressionStatement(JsExpressionStatement x, JsContext ctx) {
|
||||
public void visitExpressionStatement(JsExpressionStatement x) {
|
||||
boolean surroundWithParentheses = JsFirstExpressionVisitor.exec(x);
|
||||
if (surroundWithParentheses) {
|
||||
leftParen();
|
||||
@@ -450,7 +450,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFor(JsFor x, JsContext ctx) {
|
||||
public void visitFor(JsFor x) {
|
||||
_for();
|
||||
spaceOpt();
|
||||
leftParen();
|
||||
@@ -489,7 +489,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitForIn(JsForIn x, JsContext ctx) {
|
||||
public void visitForIn(JsForIn x) {
|
||||
_for();
|
||||
spaceOpt();
|
||||
leftParen();
|
||||
@@ -524,7 +524,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFunction(JsFunction x, JsContext ctx) {
|
||||
public void visitFunction(JsFunction x) {
|
||||
p.print(CHARS_FUNCTION);
|
||||
space();
|
||||
if (x.getName() != null) {
|
||||
@@ -547,7 +547,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitIf(JsIf x, JsContext ctx) {
|
||||
public void visitIf(JsIf x) {
|
||||
_if();
|
||||
spaceOpt();
|
||||
leftParen();
|
||||
@@ -583,7 +583,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInvocation(JsInvocation x, JsContext ctx) {
|
||||
public void visitInvocation(JsInvocation x) {
|
||||
printPair(x, x.getQualifier());
|
||||
|
||||
leftParen();
|
||||
@@ -592,7 +592,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitLabel(JsLabel x, JsContext ctx) {
|
||||
public void visitLabel(JsLabel x) {
|
||||
nameOf(x);
|
||||
_colon();
|
||||
spaceOpt();
|
||||
@@ -600,28 +600,32 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNameRef(JsNameRef x, JsContext ctx) {
|
||||
JsExpression q = x.getQualifier();
|
||||
if (q != null) {
|
||||
parenPush(x, q, false);
|
||||
if (q instanceof JsNumberLiteral) {
|
||||
/**
|
||||
* Fix for Issue #3796. "42.foo" is not allowed, but "(42).foo" is.
|
||||
*/
|
||||
public void visitNameRef(JsNameRef nameRef) {
|
||||
JsExpression qualifier = nameRef.getQualifier();
|
||||
if (qualifier != null) {
|
||||
final boolean enclose;
|
||||
if (qualifier instanceof JsLiteral.JsValueLiteral) {
|
||||
// "42.foo" is not allowed, but "(42).foo" is.
|
||||
enclose = qualifier instanceof JsNumberLiteral;
|
||||
}
|
||||
else {
|
||||
enclose = parenCalc(nameRef, qualifier, false);
|
||||
}
|
||||
|
||||
if (enclose) {
|
||||
leftParen();
|
||||
}
|
||||
accept(q);
|
||||
if (q instanceof JsNumberLiteral) {
|
||||
accept(qualifier);
|
||||
if (enclose) {
|
||||
rightParen();
|
||||
}
|
||||
parenPop(x, q, false);
|
||||
p.print('.');
|
||||
}
|
||||
nameRef(x);
|
||||
p.print(nameRef.getIdent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNew(JsNew x, JsContext ctx) {
|
||||
public void visitNew(JsNew x) {
|
||||
p.print(CHARS_NEW);
|
||||
space();
|
||||
|
||||
@@ -641,22 +645,22 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNull(JsNullLiteral x, JsContext ctx) {
|
||||
public void visitNull(JsNullLiteral x) {
|
||||
p.print(CHARS_NULL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInt(JsIntLiteral x, JsContext ctx) {
|
||||
public void visitInt(JsIntLiteral x) {
|
||||
p.print(x.value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDouble(JsDoubleLiteral x, JsContext ctx) {
|
||||
public void visitDouble(JsDoubleLiteral x) {
|
||||
p.print(x.value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitObjectLiteral(JsObjectLiteral objectLiteral, JsContext context) {
|
||||
public void visitObjectLiteral(JsObjectLiteral objectLiteral) {
|
||||
p.print('{');
|
||||
if (objectLiteral.isMultiline()) {
|
||||
p.indentIn();
|
||||
@@ -708,12 +712,12 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParameter(JsParameter x, JsContext ctx) {
|
||||
public void visitParameter(JsParameter x) {
|
||||
nameOf(x);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPostfixOperation(JsPostfixOperation x, JsContext ctx) {
|
||||
public void visitPostfixOperation(JsPostfixOperation x) {
|
||||
JsUnaryOperator op = x.getOperator();
|
||||
JsExpression arg = x.getArg();
|
||||
// unary operators always associate correctly (I think)
|
||||
@@ -722,7 +726,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPrefixOperation(JsPrefixOperation x, JsContext ctx) {
|
||||
public void visitPrefixOperation(JsPrefixOperation x) {
|
||||
JsUnaryOperator op = x.getOperator();
|
||||
p.print(op.getSymbol());
|
||||
JsExpression arg = x.getArg();
|
||||
@@ -734,17 +738,17 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitProgram(JsProgram x, JsContext context) {
|
||||
public void visitProgram(JsProgram x) {
|
||||
p.print("<JsProgram>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitProgramFragment(JsProgramFragment x, JsContext ctx) {
|
||||
public void visitProgramFragment(JsProgramFragment x) {
|
||||
p.print("<JsProgramFragment>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitRegExp(JsRegExp x, JsContext ctx) {
|
||||
public void visitRegExp(JsRegExp x) {
|
||||
slash();
|
||||
p.print(x.getPattern());
|
||||
slash();
|
||||
@@ -755,7 +759,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitReturn(JsReturn x, JsContext ctx) {
|
||||
public void visitReturn(JsReturn x) {
|
||||
p.print(CHARS_RETURN);
|
||||
JsExpression expr = x.getExpression();
|
||||
if (expr != null) {
|
||||
@@ -765,12 +769,12 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitString(JsStringLiteral x, JsContext ctx) {
|
||||
public void visitString(JsStringLiteral x) {
|
||||
p.print(javaScriptString(x.getValue()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(JsSwitch x, JsContext ctx) {
|
||||
public void visit(JsSwitch x) {
|
||||
p.print(CHARS_SWITCH);
|
||||
spaceOpt();
|
||||
leftParen();
|
||||
@@ -783,19 +787,19 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitThis(JsLiteral.JsThisRef x, JsContext ctx) {
|
||||
public void visitThis(JsLiteral.JsThisRef x) {
|
||||
p.print(CHARS_THIS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitThrow(JsThrow x, JsContext ctx) {
|
||||
public void visitThrow(JsThrow x) {
|
||||
p.print(CHARS_THROW);
|
||||
space();
|
||||
accept(x.getExpression());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitTry(JsTry x, JsContext ctx) {
|
||||
public void visitTry(JsTry x) {
|
||||
p.print(CHARS_TRY);
|
||||
spaceOpt();
|
||||
accept(x.getTryBlock());
|
||||
@@ -811,7 +815,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(JsVar var, JsContext ctx) {
|
||||
public void visit(JsVar var) {
|
||||
nameOf(var);
|
||||
JsExpression initExpr = var.getInitExpression();
|
||||
if (initExpr != null) {
|
||||
@@ -827,7 +831,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitVars(JsVars vars, JsContext context) {
|
||||
public void visitVars(JsVars vars) {
|
||||
var();
|
||||
space();
|
||||
boolean sep = false;
|
||||
@@ -848,7 +852,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDocComment(JsDocComment comment, JsContext context) {
|
||||
public void visitDocComment(JsDocComment comment) {
|
||||
boolean asSingleLine = comment.getTags().size() == 1;
|
||||
if (!asSingleLine) {
|
||||
newlineOpt();
|
||||
@@ -881,7 +885,7 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
p.print((CharSequence) value);
|
||||
}
|
||||
else {
|
||||
visitNameRef((JsNameRef) value, context);
|
||||
visitNameRef((JsNameRef) value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1040,10 +1044,6 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
nameDef(hasName.getName());
|
||||
}
|
||||
|
||||
private void nameRef(JsNameRef nameRef) {
|
||||
p.print(nameRef.getIdent());
|
||||
}
|
||||
|
||||
private boolean nestedPop(JsStatement statement) {
|
||||
boolean pop = !(statement instanceof JsBlock);
|
||||
if (pop) {
|
||||
@@ -1070,14 +1070,6 @@ public class JsToStringGenerationVisitor extends JsVisitor {
|
||||
return parentPrec > childPrec || parentPrec == childPrec && wrongAssoc;
|
||||
}
|
||||
|
||||
private boolean parenPop(JsExpression parent, JsExpression child, boolean wrongAssoc) {
|
||||
boolean doPop = parenCalc(parent, child, wrongAssoc);
|
||||
if (doPop) {
|
||||
rightParen();
|
||||
}
|
||||
return doPop;
|
||||
}
|
||||
|
||||
private boolean _parenPopOrSpace(JsExpression parent, JsExpression child, boolean wrongAssoc) {
|
||||
boolean doPop = parenCalc(parent, child, wrongAssoc);
|
||||
if (doPop) {
|
||||
|
||||
@@ -25,13 +25,13 @@ public class ChameleonJsExpression implements JsExpression {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor visitor, JsContext context) {
|
||||
expression.accept(visitor, context);
|
||||
public void accept(JsVisitor visitor) {
|
||||
expression.accept(visitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
expression.acceptChildren(visitor, context);
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
expression.acceptChildren(visitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,12 +37,12 @@ public final class JsArrayAccess extends JsExpressionImpl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitArrayAccess(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitArrayAccess(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(arrayExpression);
|
||||
visitor.accept(indexExpression);
|
||||
}
|
||||
|
||||
@@ -27,12 +27,12 @@ public final class JsArrayLiteral extends JsLiteral {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitArray(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitArray(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.acceptWithInsertRemove(expressions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,12 +34,12 @@ public final class JsBinaryOperation extends JsExpressionImpl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitBinaryExpression(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitBinaryExpression(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
if (op.isAssignment()) {
|
||||
visitor.acceptLvalue(arg1);
|
||||
}
|
||||
|
||||
@@ -44,12 +44,12 @@ public class JsBlock extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitBlock(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitBlock(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.acceptWithInsertRemove(statements);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public final class JsBreak extends JsContinue {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitBreak(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitBreak(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,13 +23,13 @@ public final class JsCase extends JsSwitchMember {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitCase(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitCase(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(caseExpression);
|
||||
super.acceptChildren(visitor, context);
|
||||
super.acceptChildren(visitor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,12 +48,12 @@ public class JsCatch extends SourceInfoAwareJsNode implements HasCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitCatch(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitCatch(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(param);
|
||||
if (condition != null) {
|
||||
visitor.accept(condition);
|
||||
|
||||
@@ -43,12 +43,12 @@ public final class JsConditional extends JsExpressionImpl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitConditional(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitConditional(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(testExpression);
|
||||
visitor.accept(thenExpression);
|
||||
visitor.accept(elseExpression);
|
||||
|
||||
@@ -23,7 +23,7 @@ public class JsContinue extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitContinue(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitContinue(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,12 +12,12 @@ public class JsDebugger extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitDebugger(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitDebugger(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ package com.google.dart.compiler.backend.js.ast;
|
||||
*/
|
||||
public final class JsDefault extends JsSwitchMember {
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitDefault(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitDefault(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public class JsDoWhile extends JsWhile {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitDoWhile(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitDoWhile(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class JsDocComment extends JsExpressionImpl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitDocComment(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitDocComment(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ public class JsEmpty extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitEmpty(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitEmpty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,12 @@ public final class JsExpressionStatement extends AbstractNode implements JsState
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitExpressionStatement(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitExpressionStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(expression);
|
||||
}
|
||||
|
||||
|
||||
@@ -71,12 +71,12 @@ public class JsFor extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitFor(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitFor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
assert (!(initExpression != null && initVars != null));
|
||||
|
||||
if (initExpression != null) {
|
||||
|
||||
@@ -49,12 +49,12 @@ public class JsForIn extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitForIn(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitForIn(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
if (iterExpression != null) {
|
||||
visitor.acceptLvalue(iterExpression);
|
||||
}
|
||||
|
||||
@@ -64,12 +64,12 @@ public final class JsFunction extends JsLiteral implements HasName {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitFunction(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitFunction(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.acceptWithInsertRemove(params);
|
||||
visitor.accept(body);
|
||||
}
|
||||
|
||||
@@ -51,12 +51,12 @@ public final class JsIf extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitIf(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitIf(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(ifExpression);
|
||||
visitor.accept(thenStatement);
|
||||
if (elseStatement != null) {
|
||||
|
||||
@@ -52,12 +52,12 @@ public final class JsInvocation extends JsExpressionImpl.JsExpressionHasArgument
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitInvocation(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitInvocation(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(qualifier);
|
||||
visitor.acceptList(arguments);
|
||||
}
|
||||
|
||||
@@ -42,12 +42,12 @@ public class JsLabel extends SourceInfoAwareJsNode implements JsStatement, HasNa
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitLabel(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitLabel(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(statement);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@ public abstract class JsLiteral extends JsExpressionImpl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitThis(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitThis(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,8 +41,8 @@ public abstract class JsLiteral extends JsExpressionImpl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitBoolean(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitBoolean(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,12 +69,12 @@ public final class JsNameRef extends JsExpressionImpl implements HasName {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitNameRef(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitNameRef(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
if (qualifier != null) {
|
||||
visitor.accept(qualifier);
|
||||
}
|
||||
|
||||
@@ -25,12 +25,12 @@ public final class JsNew extends JsExpressionImpl.JsExpressionHasArguments {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitNew(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitNew(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(constructorExpression);
|
||||
visitor.acceptList(arguments);
|
||||
}
|
||||
|
||||
@@ -11,9 +11,9 @@ public interface JsNode extends HasSourceInfo {
|
||||
* Causes this object to have the visitor visit itself and its children.
|
||||
*
|
||||
* @param visitor the visitor that should traverse this node
|
||||
* @param context the context of an existing traversal
|
||||
*
|
||||
*/
|
||||
void accept(JsVisitor visitor, JsContext context);
|
||||
void accept(JsVisitor visitor);
|
||||
|
||||
void acceptChildren(JsVisitor visitor, JsContext context);
|
||||
void acceptChildren(JsVisitor visitor);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ public final class JsNullLiteral extends JsLiteral.JsValueLiteral {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitNull(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitNull(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,8 +13,8 @@ public abstract class JsNumberLiteral extends JsLiteral.JsValueLiteral {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitDouble(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitDouble(this);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
@@ -30,8 +30,8 @@ public abstract class JsNumberLiteral extends JsLiteral.JsValueLiteral {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitInt(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitInt(this);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
|
||||
@@ -39,12 +39,12 @@ public final class JsObjectLiteral extends JsLiteral {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitObjectLiteral(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitObjectLiteral(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.acceptWithInsertRemove(properties);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ public final class JsParameter extends SourceInfoAwareJsNode implements HasName
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitParameter(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitParameter(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public final class JsPostfixOperation extends JsUnaryOperation {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitPostfixOperation(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitPostfixOperation(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public final class JsPrefixOperation extends JsUnaryOperation {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitPrefixOperation(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitPrefixOperation(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ package com.google.dart.compiler.backend.js.ast;
|
||||
import gnu.trove.TDoubleObjectHashMap;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.TIntObjectHashMap;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -109,12 +108,12 @@ public final class JsProgram extends SourceInfoAwareJsNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, @Nullable JsContext context) {
|
||||
v.visitProgram(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitProgram(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
for (JsProgramFragment fragment : fragments) {
|
||||
visitor.accept(fragment);
|
||||
}
|
||||
|
||||
@@ -19,12 +19,12 @@ public class JsProgramFragment extends SourceInfoAwareJsNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitProgramFragment(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitProgramFragment(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(globalBlock);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,12 +35,12 @@ public class JsPropertyInitializer extends SourceInfoAwareJsNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitPropertyInitializer(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitPropertyInitializer(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(labelExpr);
|
||||
visitor.accept(valueExpr);
|
||||
}
|
||||
|
||||
@@ -4,9 +4,6 @@
|
||||
|
||||
package com.google.dart.compiler.backend.js.ast;
|
||||
|
||||
/**
|
||||
* A JavaScript regular expression.
|
||||
*/
|
||||
public final class JsRegExp extends JsLiteral.JsValueLiteral {
|
||||
private String flags;
|
||||
private String pattern;
|
||||
@@ -31,7 +28,7 @@ public final class JsRegExp extends JsLiteral.JsValueLiteral {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitRegExp(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitRegExp(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,12 +26,12 @@ public final class JsReturn extends SourceInfoAwareJsNode implements JsStatement
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitReturn(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitReturn(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
if (expression != null) {
|
||||
visitor.accept(expression);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public final class JsStringLiteral extends JsLiteral.JsValueLiteral {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitString(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,12 +32,12 @@ public class JsSwitch extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visit(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visit(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(expression);
|
||||
visitor.acceptWithInsertRemove(cases);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public abstract class JsSwitchMember extends SourceInfoAwareJsNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.acceptWithInsertRemove(statements);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,12 +23,12 @@ public class JsThrow extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitThrow(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitThrow(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(expression);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,12 +48,12 @@ public class JsTry extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitTry(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitTry(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(tryBlock);
|
||||
visitor.acceptWithInsertRemove(catches);
|
||||
if (finallyBlock != null) {
|
||||
|
||||
@@ -33,7 +33,7 @@ public abstract class JsUnaryOperation extends JsExpressionImpl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
if (op.isModifying()) {
|
||||
// The delete operator is practically like an assignment of undefined, so
|
||||
// for practical purposes we're treating it as an lvalue.
|
||||
|
||||
@@ -81,12 +81,12 @@ public class JsVars extends SourceInfoAwareJsNode implements JsStatement, Iterab
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visit(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visit(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
if (initExpression != null) {
|
||||
visitor.accept(initExpression);
|
||||
}
|
||||
@@ -113,12 +113,12 @@ public class JsVars extends SourceInfoAwareJsNode implements JsStatement, Iterab
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitVars(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitVars(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.acceptWithInsertRemove(vars);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,280 +9,202 @@ import com.google.dart.compiler.backend.js.ast.JsVars.JsVar;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class JsVisitor {
|
||||
protected static final JsContext LVALUE_CONTEXT = new JsContext() {
|
||||
@Override
|
||||
public boolean canInsert() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRemove() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertAfter(JsNode node) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertBefore(JsNode node) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLvalue() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMe() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void replaceMe(JsNode node) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
};
|
||||
|
||||
protected static final JsContext UNMODIFIABLE_CONTEXT = new JsContext() {
|
||||
@Override
|
||||
public boolean canInsert() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRemove() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertAfter(JsNode node) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertBefore(JsNode node) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLvalue() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMe() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void replaceMe(JsNode node) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
};
|
||||
|
||||
public <T extends JsNode> void accept(T node) {
|
||||
doAccept(node, UNMODIFIABLE_CONTEXT);
|
||||
node.accept(this);
|
||||
}
|
||||
|
||||
public final <T extends JsNode> void acceptList(List<T> collection) {
|
||||
for (T node : collection) {
|
||||
doAccept(node, UNMODIFIABLE_CONTEXT);
|
||||
accept(node);
|
||||
}
|
||||
}
|
||||
|
||||
public void acceptLvalue(JsExpression expression) {
|
||||
doAccept(expression, LVALUE_CONTEXT);
|
||||
accept(expression);
|
||||
}
|
||||
|
||||
public final <T extends JsNode> void acceptWithInsertRemove(List<T> collection) {
|
||||
for (T node : collection) {
|
||||
doAccept(node, UNMODIFIABLE_CONTEXT);
|
||||
accept(node);
|
||||
}
|
||||
}
|
||||
|
||||
public void visitArrayAccess(JsArrayAccess x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitArrayAccess(JsArrayAccess x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitArray(JsArrayLiteral x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitArray(JsArrayLiteral x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitBinaryExpression(JsBinaryOperation x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitBinaryExpression(JsBinaryOperation x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitBlock(JsBlock x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitBlock(JsBlock x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitBoolean(JsLiteral.JsBooleanLiteral x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitBoolean(JsLiteral.JsBooleanLiteral x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitBreak(JsBreak x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitBreak(JsBreak x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitCase(JsCase x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitCase(JsCase x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitCatch(JsCatch x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitCatch(JsCatch x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitConditional(JsConditional x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitConditional(JsConditional x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitContinue(JsContinue x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitContinue(JsContinue x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitDebugger(JsDebugger x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitDebugger(JsDebugger x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitDefault(JsDefault x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitDefault(JsDefault x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitDoWhile(JsDoWhile x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitDoWhile(JsDoWhile x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitEmpty(JsEmpty x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitEmpty(JsEmpty x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitExpressionStatement(JsExpressionStatement x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitExpressionStatement(JsExpressionStatement x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitFor(JsFor x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitFor(JsFor x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitForIn(JsForIn x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitForIn(JsForIn x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitFunction(JsFunction x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitFunction(JsFunction x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitIf(JsIf x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitIf(JsIf x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitInvocation(JsInvocation x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitInvocation(JsInvocation x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitLabel(JsLabel x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitLabel(JsLabel x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitNameRef(JsNameRef x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitNameRef(JsNameRef nameRef) {
|
||||
visitElement(nameRef);
|
||||
}
|
||||
|
||||
public void visitNew(JsNew x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitNew(JsNew x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitNull(JsNullLiteral x, JsContext ctx) {
|
||||
visitElement(x, ctx);
|
||||
public void visitNull(JsNullLiteral x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitInt(JsNumberLiteral.JsIntLiteral x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitInt(JsNumberLiteral.JsIntLiteral x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitDouble(JsNumberLiteral.JsDoubleLiteral x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitDouble(JsNumberLiteral.JsDoubleLiteral x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitObjectLiteral(JsObjectLiteral x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitObjectLiteral(JsObjectLiteral x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitParameter(JsParameter x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitParameter(JsParameter x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitPostfixOperation(JsPostfixOperation x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitPostfixOperation(JsPostfixOperation x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitPrefixOperation(JsPrefixOperation x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitPrefixOperation(JsPrefixOperation x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitProgram(JsProgram x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitProgram(JsProgram x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitProgramFragment(JsProgramFragment x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitProgramFragment(JsProgramFragment x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitPropertyInitializer(JsPropertyInitializer x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitPropertyInitializer(JsPropertyInitializer x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitRegExp(JsRegExp x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitRegExp(JsRegExp x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitReturn(JsReturn x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitReturn(JsReturn x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitString(JsStringLiteral x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitString(JsStringLiteral x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visit(JsSwitch x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visit(JsSwitch x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitThis(JsLiteral.JsThisRef x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitThis(JsLiteral.JsThisRef x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitThrow(JsThrow x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitThrow(JsThrow x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitTry(JsTry x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitTry(JsTry x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visit(JsVar x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visit(JsVar x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitVars(JsVars x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitVars(JsVars x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitWhile(JsWhile x, JsContext context) {
|
||||
visitElement(x, context);
|
||||
public void visitWhile(JsWhile x) {
|
||||
visitElement(x);
|
||||
}
|
||||
|
||||
public void visitDocComment(JsDocComment comment, JsContext context) {
|
||||
visitElement(comment, context);
|
||||
public void visitDocComment(JsDocComment comment) {
|
||||
visitElement(comment);
|
||||
}
|
||||
|
||||
protected void visitElement(JsNode node, JsContext context) {
|
||||
}
|
||||
|
||||
protected void doAccept(JsNode node, JsContext context) {
|
||||
node.accept(this, context);
|
||||
protected void visitElement(JsNode node) {
|
||||
}
|
||||
}
|
||||
@@ -36,12 +36,12 @@ public class JsWhile extends SourceInfoAwareJsNode implements JsStatement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(JsVisitor v, JsContext context) {
|
||||
v.visitWhile(this, context);
|
||||
public void accept(JsVisitor v) {
|
||||
v.visitWhile(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
visitor.accept(condition);
|
||||
visitor.accept(body);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.google.dart.compiler.backend.js.ast;
|
||||
|
||||
public abstract class RecursiveJsVisitor extends JsVisitor {
|
||||
@Override
|
||||
protected void visitElement(JsNode node, JsContext context) {
|
||||
node.acceptChildren(this, context);
|
||||
protected void visitElement(JsNode node) {
|
||||
node.acceptChildren(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,6 @@ abstract class SourceInfoAwareJsNode extends AbstractNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptChildren(JsVisitor visitor, JsContext context) {
|
||||
public void acceptChildren(JsVisitor visitor) {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user