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 a JavaScript do..while statement. 012 */ 013 public class JsDoWhile extends JsWhile { 014 public JsDoWhile() { 015 } 016 017 public JsDoWhile(JsExpression condition, JsStatement body) { 018 super(condition, body); 019 } 020 021 @Override 022 public void accept(JsVisitor v) { 023 v.visitDoWhile(this); 024 } 025 026 @Override 027 public void traverse(JsVisitorWithContext v, JsContext ctx) { 028 if (v.visit(this, ctx)) { 029 body = v.acceptStatement(body); 030 condition = v.accept(condition); 031 } 032 v.endVisit(this, ctx); 033 } 034 035 @NotNull 036 @Override 037 public JsDoWhile deepCopy() { 038 JsExpression conditionCopy = AstUtil.deepCopy(condition); 039 JsStatement bodyCopy = AstUtil.deepCopy(body); 040 041 return new JsDoWhile(conditionCopy, bodyCopy).withMetadataFrom(this); 042 } 043 }