001 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 002 // for details. All rights reserved. Use of this source code is governed by a 003 // BSD-style license that can be found in the LICENSE file. 004 005 package com.google.dart.compiler.backend.js.ast; 006 007 import org.jetbrains.annotations.Nullable; 008 009 public final class JsBinaryOperation extends JsExpressionImpl { 010 private JsExpression arg1; 011 private JsExpression arg2; 012 private final JsBinaryOperator op; 013 014 public JsBinaryOperation(JsBinaryOperator op) { 015 this(op, null, null); 016 } 017 018 public JsBinaryOperation(JsBinaryOperator op, @Nullable JsExpression arg1, @Nullable JsExpression arg2) { 019 this.op = op; 020 this.arg1 = arg1; 021 this.arg2 = arg2; 022 } 023 024 public JsExpression getArg1() { 025 return arg1; 026 } 027 028 public JsExpression getArg2() { 029 return arg2; 030 } 031 032 public JsBinaryOperator getOperator() { 033 return op; 034 } 035 036 @Override 037 public void accept(JsVisitor v) { 038 v.visitBinaryExpression(this); 039 } 040 041 @Override 042 public void acceptChildren(JsVisitor visitor) { 043 if (op.isAssignment()) { 044 visitor.acceptLvalue(arg1); 045 } 046 else { 047 visitor.accept(arg1); 048 } 049 visitor.accept(arg2); 050 } 051 }