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 interface JsNode {
010 /**
011 * Causes this object to have the visitor visit itself and its children.
012 *
013 * @param visitor the visitor that should traverse this node
014 */
015 void accept(JsVisitor visitor);
016
017 void acceptChildren(JsVisitor visitor);
018
019 /**
020 * Return the source info associated with this object.
021 */
022 Object getSource();
023
024 /**
025 * Set the source info associated with this object.
026 *
027 * @param info
028 */
029 void setSource(Object info);
030
031 JsNode source(Object info);
032
033 @NotNull
034 JsNode deepCopy();
035
036 /**
037 * Causes this object to have the visitor visit itself and its children.
038 *
039 * @param visitor the visitor that should traverse this node
040 * @param ctx the context of an existing traversal
041 */
042 void traverse(JsVisitorWithContext visitor, JsContext ctx);
043 }