| Index: compiler/java/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java
|
| diff --git a/compiler/java/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java b/compiler/java/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java
|
| deleted file mode 100644
|
| index 6fb4dc4f82b292d680638d28e02075b9acba4780..0000000000000000000000000000000000000000
|
| --- a/compiler/java/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java
|
| +++ /dev/null
|
| @@ -1,134 +0,0 @@
|
| -// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -package com.google.dart.compiler.backend.js;
|
| -
|
| -import com.google.dart.compiler.backend.js.ast.JsArrayAccess;
|
| -import com.google.dart.compiler.backend.js.ast.JsArrayLiteral;
|
| -import com.google.dart.compiler.backend.js.ast.JsBinaryOperation;
|
| -import com.google.dart.compiler.backend.js.ast.JsConditional;
|
| -import com.google.dart.compiler.backend.js.ast.JsContext;
|
| -import com.google.dart.compiler.backend.js.ast.JsExprStmt;
|
| -import com.google.dart.compiler.backend.js.ast.JsExpression;
|
| -import com.google.dart.compiler.backend.js.ast.JsFunction;
|
| -import com.google.dart.compiler.backend.js.ast.JsInvocation;
|
| -import com.google.dart.compiler.backend.js.ast.JsNameRef;
|
| -import com.google.dart.compiler.backend.js.ast.JsNew;
|
| -import com.google.dart.compiler.backend.js.ast.JsObjectLiteral;
|
| -import com.google.dart.compiler.backend.js.ast.JsPostfixOperation;
|
| -import com.google.dart.compiler.backend.js.ast.JsPrefixOperation;
|
| -import com.google.dart.compiler.backend.js.ast.JsRegExp;
|
| -import com.google.dart.compiler.backend.js.ast.JsVisitor;
|
| -
|
| -/**
|
| - * 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:<br>
|
| - * <ul>
|
| - * <li>{ key : 'value'}</li>
|
| - * <li>{ key : 'value'}.key</li>
|
| - * <li>function () {return 1;}()</li>
|
| - * <li>function () {return 1;}.prototype</li>
|
| - * </ul>
|
| - *
|
| - * The following do not require parentheses:<br>
|
| - * <ul>
|
| - * <li>var x = { key : 'value'}</li>
|
| - * <li>"string" + { key : 'value'}.key</li>
|
| - * <li>function func() {}</li>
|
| - * <li>function() {}</li>
|
| - * </ul>
|
| - */
|
| -public class JsFirstExpressionVisitor extends JsVisitor {
|
| -
|
| - public static boolean exec(JsExprStmt statement) {
|
| - JsFirstExpressionVisitor visitor = new JsFirstExpressionVisitor();
|
| - JsExpression expression = statement.getExpression();
|
| - // Pure function declarations do not need parentheses
|
| - if (expression instanceof JsFunction) {
|
| - return false;
|
| - }
|
| - visitor.accept(statement.getExpression());
|
| - return visitor.needsParentheses;
|
| - }
|
| -
|
| - private boolean needsParentheses = false;
|
| -
|
| - private JsFirstExpressionVisitor() {
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsArrayAccess x, JsContext ctx) {
|
| - accept(x.getArrayExpr());
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsArrayLiteral x, JsContext ctx) {
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsBinaryOperation x, JsContext ctx) {
|
| - accept(x.getArg1());
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsConditional x, JsContext ctx) {
|
| - accept(x.getTestExpression());
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsFunction x, JsContext ctx) {
|
| - needsParentheses = true;
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsInvocation x, JsContext ctx) {
|
| - accept(x.getQualifier());
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsNameRef x, JsContext ctx) {
|
| - if (!x.isLeaf()) {
|
| - accept(x.getQualifier());
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsNew x, JsContext ctx) {
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsObjectLiteral x, JsContext ctx) {
|
| - needsParentheses = true;
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsPostfixOperation x, JsContext ctx) {
|
| - accept(x.getArg());
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsPrefixOperation x, JsContext ctx) {
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean visit(JsRegExp x, JsContext ctx) {
|
| - return false;
|
| - }
|
| -}
|
|
|