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 org.jetbrains.annotations.NotNull;
008
009 public final class JsExpressionStatement extends AbstractNode implements JsStatement {
010 @NotNull
011 private JsExpression expression;
012
013 public JsExpressionStatement(@NotNull JsExpression expression) {
014 this.expression = expression;
015 }
016
017 @NotNull
018 public JsExpression getExpression() {
019 return expression;
020 }
021
022 @Override
023 public void accept(JsVisitor v) {
024 v.visitExpressionStatement(this);
025 }
026
027 @Override
028 public void acceptChildren(JsVisitor visitor) {
029 visitor.accept(expression);
030 }
031
032 @Override
033 public Object getSource() {
034 return null;
035 }
036
037 @Override
038 public void setSource(Object info) {
039 throw new IllegalStateException("You must not set source info for JsExpressionStatement, set for expression");
040 }
041
042 @Override
043 public JsNode source(Object info) {
044 throw new IllegalStateException("You must not set source info for JsExpressionStatement, set for expression");
045 }
046
047 @Override
048 public void traverse(JsVisitorWithContext v, JsContext ctx) {
049 if (v.visit(this, ctx)) {
050 expression = v.accept(expression);
051 }
052 v.endVisit(this, ctx);
053 }
054
055 @NotNull
056 @Override
057 public JsExpressionStatement deepCopy() {
058 return new JsExpressionStatement(expression.deepCopy()).withMetadataFrom(this);
059 }
060 }