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    }