Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(681)

Unified Diff: compiler/java/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java

Issue 9479013: Remove backends. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: More clean up Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698