Index: compiler/java/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java |
diff --git a/compiler/java/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java b/compiler/java/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java |
deleted file mode 100644 |
index 8d70657a31e7d925580abfc62d3328972735f045..0000000000000000000000000000000000000000 |
--- a/compiler/java/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java |
+++ /dev/null |
@@ -1,114 +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.JsContext; |
-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.JsVisitable; |
-import com.google.dart.compiler.backend.js.ast.JsVisitor; |
- |
-/** |
- * Searches for method invocations in constructor expressions that would not |
- * normally be surrounded by parentheses. |
- */ |
-public class JsConstructExpressionVisitor extends JsVisitor { |
- |
- public static boolean exec(JsExpression expression) { |
- if (JsPrecedenceVisitor.exec(expression) < JsPrecedenceVisitor.PRECEDENCE_NEW) { |
- return true; |
- } |
- JsConstructExpressionVisitor visitor = new JsConstructExpressionVisitor(); |
- visitor.accept(expression); |
- return visitor.containsInvocation; |
- } |
- |
- private boolean containsInvocation = false; |
- |
- private JsConstructExpressionVisitor() { |
- } |
- |
- /** |
- * We only look at the array expression since the index has its own scope. |
- */ |
- @Override |
- public boolean visit(JsArrayAccess x, JsContext ctx) { |
- accept(x.getArrayExpr()); |
- return false; |
- } |
- |
- /** |
- * Array literals have their own scoping. |
- */ |
- @Override |
- public boolean visit(JsArrayLiteral x, JsContext ctx) { |
- return false; |
- } |
- |
- /** |
- * Functions have their own scoping. |
- */ |
- @Override |
- public boolean visit(JsFunction x, JsContext ctx) { |
- return false; |
- } |
- |
- @Override |
- public boolean visit(JsInvocation x, JsContext ctx) { |
- containsInvocation = true; |
- return false; |
- } |
- |
- @Override |
- public boolean visit(JsNameRef x, JsContext ctx) { |
- if (!x.isLeaf()) { |
- accept(x.getQualifier()); |
- } |
- return false; |
- } |
- |
- /** |
- * New constructs bind to the nearest set of parentheses. |
- */ |
- @Override |
- public boolean visit(JsNew x, JsContext ctx) { |
- return false; |
- } |
- |
- /** |
- * Object literals have their own scope. |
- */ |
- @Override |
- public boolean visit(JsObjectLiteral x, JsContext ctx) { |
- return false; |
- } |
- |
- /** |
- * We only look at nodes that would not normally be surrounded by parentheses. |
- */ |
- @Override |
- protected <T extends JsVisitable> T doAccept(T node) { |
- // Assign to Object to prevent 'inconvertible types' compile errors due |
- // to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6548436 |
- // reproducible in jdk1.6.0_02. |
- Object o = node; |
- if (o instanceof JsExpression) { |
- JsExpression expression = (JsExpression) o; |
- int precedence = JsPrecedenceVisitor.exec(expression); |
- // Only visit expressions that won't automatically be surrounded by |
- // parentheses |
- if (precedence < JsPrecedenceVisitor.PRECEDENCE_NEW) { |
- return node; |
- } |
- } |
- return super.doAccept(node); |
- } |
-} |