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

Unified Diff: pkg/analyzer/lib/src/summary/fasta/visitor.dart

Issue 2738273002: Add fasta-based summary generation code. (Closed)
Patch Set: Actually disable the test Created 3 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
Index: pkg/analyzer/lib/src/summary/fasta/visitor.dart
diff --git a/pkg/analyzer/lib/src/summary/fasta/visitor.dart b/pkg/analyzer/lib/src/summary/fasta/visitor.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a5bc271377259a9b5c58576f936fb3b94462476d
--- /dev/null
+++ b/pkg/analyzer/lib/src/summary/fasta/visitor.dart
@@ -0,0 +1,141 @@
+// Copyright (c) 2017, 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.
+
+/// Visitor of the simplified expression syntax tree.
+library summary.src.visitor;
+
+import 'expressions.dart';
+
+/// Plain non-recursive visitor.
+class Visitor {
+ // References
+
+ visitRef(Ref n) => handleRef(n);
+ handleRef(Ref n) {}
+
+ // Literals
+
+ visitNull(NullLiteral n) => handleNull(n);
+ visitBool(BoolLiteral n) => handleBool(n);
+ visitInt(IntLiteral n) => handleInt(n);
+ visitDouble(DoubleLiteral n) => handleDouble(n);
+ visitList(ListLiteral n) => handleList(n);
+ visitMap(MapLiteral n) => handleMap(n);
+ visitString(StringLiteral n) => handleString(n);
+ visitSymbol(SymbolLiteral n) => handleSymbol(n);
+
+ handleNull(NullLiteral n){}
+ handleBool(BoolLiteral n){}
+ handleInt(IntLiteral n){}
+ handleDouble(DoubleLiteral n){}
+ handleList(ListLiteral n){}
+ handleMap(MapLiteral n){}
+ handleString(StringLiteral n){}
+ handleSymbol(SymbolLiteral n){}
+
+ // Compound expressions
+
+ visitAs(As n) => handleAs(n);
+ visitIs(Is n) => handleIs(n);
+ visitUnary(Unary n) => handleUnary(n);
+ visitBinary(Binary n) => handleBinary(n);
+ visitLoad(Load n) => handleLoad(n);
+ visitIdentical(Identical n) => handleIdentical(n);
+ visitConditional(Conditional n) => handleConditional(n);
+ visitConstCreation(ConstCreation n) => handleConstCreation(n);
+
+ handleAs(As n){}
+ handleIs(Is n){}
+ handleUnary(Unary n){}
+ handleBinary(Binary n){}
+ handleLoad(Load n){}
+ handleIdentical(Identical n){}
+ handleConditional(Conditional n){}
+ handleConstCreation(ConstCreation n){}
+
+ // Non-traditional expressions.
+
+ visitInvalid(Invalid n) => handleInvalid(n);
+ visitOpaque(Opaque n) => handleOpaque(n);
+ visitOpaqueOp(OpaqueOp n) => handleOpaqueOp(n);
+
+ handleInvalid(Invalid n){}
+ handleOpaque(Opaque n){}
+ handleOpaqueOp(OpaqueOp n){}
+}
+
+/// Post-order recursive visitor.
+///
+/// Will invoke `handle*` methods in post order (children first, parents
+/// afterwards).
+class RecursiveVisitor extends Visitor {
+ visitList(ListLiteral n){
+ for (var v in n.values) {
+ v.accept(this);
+ }
+ handleList(n);
+ }
+
+ visitMap(MapLiteral n) {
+ for (var v in n.values) {
+ v.key.accept(this);
+ v.value.accept(this);
+ }
+ handleMap(n);
+ }
+
+ visitAs(As n) {
+ n.exp.accept(this);
+ handleAs(n);
+ }
+
+ visitIs(Is n) {
+ n.exp.accept(this);
+ handleIs(n);
+ }
+
+ visitUnary(Unary n) {
+ n.exp.accept(this);
+ handleUnary(n);
+ }
+
+ visitBinary(Binary n) {
+ n.left.accept(this);
+ n.right.accept(this);
+ handleBinary(n);
+ }
+
+ visitIdentical(Identical n) {
+ n.left.accept(this);
+ n.right.accept(this);
+ handleIdentical(n);
+ }
+
+ visitLoad(Load n) {
+ n.left.accept(this);
+ handleLoad(n);
+ }
+
+ visitConditional(Conditional n) {
+ n.test.accept(this);
+ n.trueBranch.accept(this);
+ n.falseBranch.accept(this);
+ handleConditional(n);
+ }
+
+ visitConstCreation(ConstCreation n) {
+ for (var arg in n.positionalArgs) {
+ arg.accept(this);
+ }
+ for (var arg in n.namedArgs) {
+ arg.value.accept(this);
+ }
+ handleConstCreation(n);
+ }
+
+ visitOpaqueOp(OpaqueOp n) {
+ n.exp.accept(this);
+ handleOpaqueOp(n);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698