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 }