Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(461)

Unified Diff: dart/lib/compiler/implementation/tree/nodes.dart

Issue 11027023: Parse/unparse library combinators. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dart/lib/compiler/implementation/tree/nodes.dart
diff --git a/dart/lib/compiler/implementation/tree/nodes.dart b/dart/lib/compiler/implementation/tree/nodes.dart
index e8086b6cede6bddf1fd98744c93e3061b2361090..11ec100b887d27988aa322c17b33fb5f615e514d 100644
--- a/dart/lib/compiler/implementation/tree/nodes.dart
+++ b/dart/lib/compiler/implementation/tree/nodes.dart
@@ -14,11 +14,12 @@ abstract class Visitor<R> {
R visitCaseMatch(CaseMatch node) => visitNode(node);
R visitCatchBlock(CatchBlock node) => visitNode(node);
R visitClassNode(ClassNode node) => visitNode(node);
+ R visitCombinator(Combinator node) => visitNode(node);
R visitConditional(Conditional node) => visitExpression(node);
R visitContinueStatement(ContinueStatement node) => visitGotoStatement(node);
R visitDoWhile(DoWhile node) => visitLoop(node);
R visitEmptyStatement(EmptyStatement node) => visitStatement(node);
- R visitExport(Export node) => visitNode(node);
+ R visitExport(Export node) => visitLibraryTag(node);
R visitExpression(Expression node) => visitNode(node);
R visitExpressionStatement(ExpressionStatement node) => visitStatement(node);
R visitFor(For node) => visitLoop(node);
@@ -28,10 +29,11 @@ abstract class Visitor<R> {
R visitGotoStatement(GotoStatement node) => visitStatement(node);
R visitIdentifier(Identifier node) => visitExpression(node);
R visitIf(If node) => visitStatement(node);
- R visitImport(Import node) => visitNode(node);
+ R visitImport(Import node) => visitLibraryTag(node);
R visitLabel(Label node) => visitNode(node);
R visitLabeledStatement(LabeledStatement node) => visitStatement(node);
- R visitLibraryName(LibraryName node) => visitNode(node);
+ R visitLibraryName(LibraryName node) => visitLibraryTag(node);
+ R visitLibraryTag(LibraryTag node) => visitNode(node);
R visitLiteral(Literal node) => visitExpression(node);
R visitLiteralBool(LiteralBool node) => visitLiteral(node);
R visitLiteralDouble(LiteralDouble node) => visitLiteral(node);
@@ -51,8 +53,8 @@ abstract class Visitor<R> {
R visitParenthesizedExpression(ParenthesizedExpression node) {
return visitExpression(node);
}
- R visitPart(Part node) => visitNode(node);
- R visitPartOf(PartOf node) => visitNode(node);
+ R visitPart(Part node) => visitLibraryTag(node);
+ R visitPartOf(PartOf node) => visitLibraryTag(node);
R visitPostfix(Postfix node) => visitNodeList(node);
R visitPrefix(Prefix node) => visitNodeList(node);
R visitReturn(Return node) => visitStatement(node);
@@ -142,6 +144,7 @@ abstract class Node implements Spannable {
CaseMatch asCaseMatch() => null;
CatchBlock asCatchBlock() => null;
ClassNode asClassNode() => null;
+ Combinator asCombinator() => null;
Conditional asConditional() => null;
ContinueStatement asContinueStatement() => null;
DoWhile asDoWhile() => null;
@@ -1777,6 +1780,28 @@ class PartOf extends LibraryTag {
Token getEndToken() => name.getEndToken().next;
}
+class Combinator extends Node {
+ final NodeList identifiers;
+
+ final Token keywordToken;
+
+ Combinator(this.identifiers, this.keywordToken);
+
+ bool get isShow => keywordToken.stringValue === 'show';
+
+ bool get isHide => keywordToken.stringValue === 'hide';
+
+ Combinator asCombinator() => this;
+
+ accept(Visitor visitor) => visitor.visitCombinator(this);
+
+ visitChildren(Visitor visitor) => identifiers.accept(visitor);
+
+ Token getBeginToken() => keywordToken;
+
+ Token getEndToken() => identifiers.getEndToken();
+}
+
class Typedef extends Node {
final TypeAnnotation returnType;
final Identifier name;
« no previous file with comments | « dart/lib/compiler/implementation/scanner/scanner_task.dart ('k') | dart/lib/compiler/implementation/tree/unparser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698