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 com.google.dart.compiler.util.AstUtil;
008    import org.jetbrains.annotations.NotNull;
009    import org.jetbrains.annotations.Nullable;
010    
011    public class JsContinue extends SourceInfoAwareJsNode implements JsStatement {
012        protected JsNameRef label;
013    
014        public JsContinue() {
015            this(null);
016        }
017    
018        public JsContinue(@Nullable JsNameRef label) {
019            super();
020            this.label = label;
021        }
022    
023        public JsNameRef getLabel() {
024            return label;
025        }
026    
027        @Override
028        public void accept(JsVisitor v) {
029            v.visitContinue(this);
030        }
031    
032        @Override
033        public void acceptChildren(JsVisitor v) {
034            if (label != null){
035                v.accept(label);
036            }
037        }
038    
039        @Override
040        public void traverse(JsVisitorWithContext v, JsContext ctx) {
041            if (v.visit(this, ctx)) {
042                if (label != null){
043                    label = v.accept(label);
044                }
045            }
046    
047            v.endVisit(this, ctx);
048        }
049    
050        @NotNull
051        @Override
052        public JsContinue deepCopy() {
053            if (label == null) return new JsContinue();
054    
055            return new JsContinue(AstUtil.deepCopy(label)).withMetadataFrom(this);
056        }
057    }