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.common.Symbol; 008 009 /** 010 * Represents a JavaScript label statement. 011 */ 012 public class JsLabel extends SourceInfoAwareJsNode implements JsStatement, HasName { 013 private final JsName label; 014 015 private JsStatement statement; 016 017 public JsLabel(JsName label) { 018 this.label = label; 019 } 020 021 public JsLabel(JsName label, JsStatement statement) { 022 this.label = label; 023 this.statement = statement; 024 } 025 026 @Override 027 public JsName getName() { 028 return label; 029 } 030 031 @Override 032 public Symbol getSymbol() { 033 return label; 034 } 035 036 public JsStatement getStatement() { 037 return statement; 038 } 039 040 public void setStatement(JsStatement statement) { 041 this.statement = statement; 042 } 043 044 @Override 045 public void accept(JsVisitor v) { 046 v.visitLabel(this); 047 } 048 049 @Override 050 public void acceptChildren(JsVisitor visitor) { 051 visitor.accept(statement); 052 } 053 }