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 /**
008 * Represents a JavaScript if statement.
009 */
010 public final class JsIf extends SourceInfoAwareJsNode implements JsStatement {
011 private JsExpression ifExpression;
012 private JsStatement thenStatement;
013 private JsStatement elseStatement;
014
015 public JsIf() {
016 }
017
018 public JsIf(JsExpression ifExpression, JsStatement thenStatement, JsStatement elseStatement) {
019 this.ifExpression = ifExpression;
020 this.thenStatement = thenStatement;
021 this.elseStatement = elseStatement;
022 }
023
024 public JsIf(JsExpression ifExpression, JsStatement thenStatement) {
025 this.ifExpression = ifExpression;
026 this.thenStatement = thenStatement;
027 }
028
029 public JsStatement getElseStatement() {
030 return elseStatement;
031 }
032
033 public JsExpression getIfExpression() {
034 return ifExpression;
035 }
036
037 public JsStatement getThenStatement() {
038 return thenStatement;
039 }
040
041 public void setElseStatement(JsStatement elseStatement) {
042 this.elseStatement = elseStatement;
043 }
044
045 public void setIfExpression(JsExpression ifExpression) {
046 this.ifExpression = ifExpression;
047 }
048
049 public void setThenStatement(JsStatement thenStatement) {
050 this.thenStatement = thenStatement;
051 }
052
053 @Override
054 public void accept(JsVisitor v) {
055 v.visitIf(this);
056 }
057
058 @Override
059 public void acceptChildren(JsVisitor visitor) {
060 visitor.accept(ifExpression);
061 visitor.accept(thenStatement);
062 if (elseStatement != null) {
063 visitor.accept(elseStatement);
064 }
065 }
066 }