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

Unified Diff: lib/src/backend/platform_selector/ast.dart

Issue 1004013002: Add support for evaluating platform selectors. (Closed) Base URL: git@github.com:dart-lang/unittest@master
Patch Set: Code review changes Created 5 years, 9 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
« no previous file with comments | « lib/src/backend/platform_selector.dart ('k') | lib/src/backend/platform_selector/evaluator.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/backend/platform_selector/ast.dart
diff --git a/lib/src/backend/platform_selector/ast.dart b/lib/src/backend/platform_selector/ast.dart
index d1eb0aac16f50b30f33a9256e171cb48dd405313..c76fe18096598fa13056f6b41525607b6b3e461f 100644
--- a/lib/src/backend/platform_selector/ast.dart
+++ b/lib/src/backend/platform_selector/ast.dart
@@ -6,6 +6,8 @@ library unittest.backend.platform_selector.ast;
import 'package:source_span/source_span.dart';
+import 'visitor.dart';
+
/// The superclass of nodes in the platform selector abstract syntax tree.
abstract class Node {
/// The span indicating where this node came from.
@@ -16,6 +18,9 @@ abstract class Node {
///
/// This may be `null` for nodes without source information.
FileSpan get span;
+
+ /// Calls the appropriate [Visitor] method on [this] and returns the result.
+ accept(Visitor visitor);
}
/// A single variable.
@@ -27,6 +32,8 @@ class VariableNode implements Node {
VariableNode(this.name, [this.span]);
+ accept(Visitor visitor) => visitor.visitVariable(this);
+
String toString() => name;
}
@@ -39,6 +46,8 @@ class NotNode implements Node {
NotNode(this.child, [this.span]);
+ accept(Visitor visitor) => visitor.visitNot(this);
+
String toString() => child is VariableNode || child is NotNode
? "!$child"
: "!($child)";
@@ -56,6 +65,8 @@ class OrNode implements Node {
OrNode(this.left, this.right);
+ accept(Visitor visitor) => visitor.visitOr(this);
+
String toString() {
var string1 = left is AndNode || left is ConditionalNode
? "($left)"
@@ -80,6 +91,8 @@ class AndNode implements Node {
AndNode(this.left, this.right);
+ accept(Visitor visitor) => visitor.visitAnd(this);
+
String toString() {
var string1 = left is OrNode || left is ConditionalNode
? "($left)"
@@ -107,6 +120,8 @@ class ConditionalNode implements Node {
ConditionalNode(this.condition, this.whenTrue, this.whenFalse);
+ accept(Visitor visitor) => visitor.visitConditional(this);
+
String toString() {
var conditionString =
condition is ConditionalNode ? "($condition)" : condition;
« no previous file with comments | « lib/src/backend/platform_selector.dart ('k') | lib/src/backend/platform_selector/evaluator.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698