Index: compiler/java/com/google/dart/compiler/backend/js/ast/JsBinaryOperation.java |
diff --git a/compiler/java/com/google/dart/compiler/backend/js/ast/JsBinaryOperation.java b/compiler/java/com/google/dart/compiler/backend/js/ast/JsBinaryOperation.java |
deleted file mode 100644 |
index b09d50c1d058fcc64d443f0415b05bacda36cbec..0000000000000000000000000000000000000000 |
--- a/compiler/java/com/google/dart/compiler/backend/js/ast/JsBinaryOperation.java |
+++ /dev/null |
@@ -1,107 +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.ast; |
- |
-/** |
- * Represents a JavaScript binary operation. |
- */ |
-public final class JsBinaryOperation extends JsExpression { |
- |
- private JsExpression arg1; |
- private JsExpression arg2; |
- private final JsBinaryOperator op; |
- |
- public JsBinaryOperation(JsBinaryOperator op) { |
- this(op, null, null); |
- } |
- |
- public JsBinaryOperation(JsBinaryOperator op, JsExpression arg1, JsExpression arg2) { |
- this.op = op; |
- this.arg1 = arg1; |
- this.arg2 = arg2; |
- } |
- |
- public JsExpression getArg1() { |
- return arg1; |
- } |
- |
- public JsExpression getArg2() { |
- return arg2; |
- } |
- |
- public JsBinaryOperator getOperator() { |
- return op; |
- } |
- |
- @Override |
- public boolean hasSideEffects() { |
- return op.isAssignment() || arg1.hasSideEffects() || arg2.hasSideEffects(); |
- } |
- |
- @Override |
- public boolean isDefinitelyNotNull() { |
- // Precarious coding, but none of these can have null results. |
- if (op.getPrecedence() > 5) { |
- return true; |
- } |
- if (op == JsBinaryOperator.OR) { |
- if (arg1 instanceof CanBooleanEval) { |
- if (((CanBooleanEval) arg1).isBooleanTrue()) { |
- assert arg1.isDefinitelyNotNull(); |
- return true; |
- } |
- } |
- } |
- // AND and OR can return nulls |
- if (op.isAssignment()) { |
- if (op == JsBinaryOperator.ASG) { |
- return arg2.isDefinitelyNotNull(); |
- } else { |
- // All other ASG's are math ops. |
- return true; |
- } |
- } |
- |
- if (op == JsBinaryOperator.COMMA) { |
- return arg2.isDefinitelyNotNull(); |
- } |
- |
- return false; |
- } |
- |
- @Override |
- public boolean isDefinitelyNull() { |
- if (op == JsBinaryOperator.AND) { |
- return arg1.isDefinitelyNull(); |
- } |
- return false; |
- } |
- |
- public void setArg1(JsExpression arg1) { |
- this.arg1 = arg1; |
- } |
- |
- public void setArg2(JsExpression arg2) { |
- this.arg2 = arg2; |
- } |
- |
- @Override |
- public void traverse(JsVisitor v, JsContext ctx) { |
- if (v.visit(this, ctx)) { |
- if (op.isAssignment()) { |
- arg1 = v.acceptLvalue(arg1); |
- } else { |
- arg1 = v.accept(arg1); |
- } |
- arg2 = v.accept(arg2); |
- } |
- v.endVisit(this, ctx); |
- } |
- |
- @Override |
- public NodeKind getKind() { |
- return NodeKind.BINARY_OP; |
- } |
-} |