Index: compiler/java/com/google/dart/compiler/ast/DartAnnotation.java |
=================================================================== |
--- compiler/java/com/google/dart/compiler/ast/DartAnnotation.java (revision 0) |
+++ compiler/java/com/google/dart/compiler/ast/DartAnnotation.java (revision 0) |
@@ -0,0 +1,52 @@ |
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+package com.google.dart.compiler.ast; |
+ |
+import java.util.List; |
+ |
+ |
+/** |
+ * Instances of the class {@code DartAnnotation} represent metadata that can be associated with an |
+ * AST node. |
+ * |
+ * <pre> |
+ * metadata ::= |
+ * annotation* |
+ * |
+ * annotation ::= |
+ * '@' qualified (‘.’ identifier)? arguments? |
+ * </pre> |
+ */ |
+public class DartAnnotation extends DartNode { |
+ private DartExpression name; |
+ |
+ private NodeList<DartExpression> arguments = NodeList.create(this); |
+ |
+ public DartAnnotation(DartExpression name, List<DartExpression> arguments) { |
+ this.name = becomeParentOf(name); |
+ if (arguments != null) { |
+ this.arguments.addAll(arguments); |
+ } |
+ } |
+ |
+ @Override |
+ public <R> R accept(ASTVisitor<R> visitor) { |
+ return visitor.visitAnnotation(this); |
+ } |
+ |
+ public DartExpression getName() { |
+ return name; |
+ } |
+ |
+ public NodeList<DartExpression> getArguments() { |
+ return arguments; |
+ } |
+ |
+ @Override |
+ public void visitChildren(ASTVisitor<?> visitor) { |
+ safelyVisitChild(name, visitor); |
+ arguments.accept(visitor); |
+ } |
+} |