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    
010    /**
011     * Represents the JavaScript break statement.
012     */
013    public final class JsBreak extends JsContinue {
014        public JsBreak() {
015            super(null);
016        }
017    
018        public JsBreak(JsNameRef label) {
019            super(label);
020        }
021    
022        @Override
023        public void accept(JsVisitor v) {
024            v.visitBreak(this);
025        }
026    
027        @Override
028        public void traverse(JsVisitorWithContext v, JsContext ctx) {
029            if (v.visit(this, ctx)) {
030                if (label != null){
031                    label = v.accept(label);
032                }
033            }
034    
035            v.endVisit(this, ctx);
036        }
037    
038        @NotNull
039        @Override
040        public JsBreak deepCopy() {
041            return new JsBreak(AstUtil.deepCopy(label)).withMetadataFrom(this);
042        }
043    }