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

Side by Side Diff: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart

Issue 981523002: Integrity checker for CPS and Tree IR. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library tree_ir_nodes; 5 library tree_ir_nodes;
6 6
7 import '../constants/expressions.dart'; 7 import '../constants/expressions.dart';
8 import '../constants/values.dart' as values; 8 import '../constants/values.dart' as values;
9 import '../dart_types.dart' show DartType, GenericType; 9 import '../dart_types.dart' show DartType, GenericType;
10 import '../elements/elements.dart'; 10 import '../elements/elements.dart';
(...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 S visitStatement(Statement s) => s.accept(this); 843 S visitStatement(Statement s) => s.accept(this);
844 } 844 }
845 845
846 abstract class Visitor1<S, E, A> implements ExpressionVisitor1<E, A>, 846 abstract class Visitor1<S, E, A> implements ExpressionVisitor1<E, A>,
847 StatementVisitor1<S, A> { 847 StatementVisitor1<S, A> {
848 E visitExpression(Expression e, A arg) => e.accept1(this, arg); 848 E visitExpression(Expression e, A arg) => e.accept1(this, arg);
849 S visitStatement(Statement s, A arg) => s.accept1(this, arg); 849 S visitStatement(Statement s, A arg) => s.accept1(this, arg);
850 } 850 }
851 851
852 class RecursiveVisitor extends Visitor { 852 class RecursiveVisitor extends Visitor {
853 visitExecutableDefinition(ExecutableDefinition node) {
854 if (node is ConstructorDefinition) return visitConstructorDefinition(node);
855 if (node is FunctionDefinition) return visitFunctionDefinition(node);
856 if (node is FieldDefinition) return visitFieldDefinition(node);
857 throw 'Unexpected ExecutableDefinition: $node';
858 }
asgerf 2015/03/04 11:36:17 I plan to steamline the Visitor in another CL. It'
859
853 visitFunctionDefinition(FunctionDefinition node) { 860 visitFunctionDefinition(FunctionDefinition node) {
854 node.parameters.forEach(visitVariable); 861 node.parameters.forEach(visitVariable);
862 if (node.body != null) visitStatement(node.body);
863 }
864
865 visitConstructorDefinition(ConstructorDefinition node) {
866 if (node.initializers != null) node.initializers.forEach(visitInitializer);
867 visitFunctionDefinition(node);
868 }
869
870 visitFieldDefinition(FieldDefinition node) {
871 if (node.body != null) {
872 visitStatement(node.body);
873 }
874 }
875
876 visitInitializer(Initializer node) {
877 if (node is FieldInitializer) {
878 return visitFieldInitializer(node);
879 } else {
880 return visitSuperInitializer(node);
881 }
882 }
883
884 visitFieldInitializer(FieldInitializer node) {
855 visitStatement(node.body); 885 visitStatement(node.body);
856 } 886 }
857 887
888 visitSuperInitializer(SuperInitializer node) {
889 node.arguments.forEach(visitStatement);
890 }
891
858 visitVariable(Variable node) {} 892 visitVariable(Variable node) {}
859 893
860 visitVariableUse(VariableUse node) { 894 visitVariableUse(VariableUse node) {
861 visitVariable(node.variable); 895 visitVariable(node.variable);
862 } 896 }
863 897
864 visitInvokeStatic(InvokeStatic node) { 898 visitInvokeStatic(InvokeStatic node) {
865 node.arguments.forEach(visitExpression); 899 node.arguments.forEach(visitExpression);
866 } 900 }
867 901
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 visitExpressionStatement(ExpressionStatement node) { 1000 visitExpressionStatement(ExpressionStatement node) {
967 visitExpression(node.expression); 1001 visitExpression(node.expression);
968 visitStatement(node.next); 1002 visitStatement(node.next);
969 } 1003 }
970 1004
971 visitTry(Try node) { 1005 visitTry(Try node) {
972 visitStatement(node.tryBody); 1006 visitStatement(node.tryBody);
973 visitStatement(node.catchBody); 1007 visitStatement(node.catchBody);
974 } 1008 }
975 1009
976 visitFieldInitializer(FieldInitializer node) {
977 visitStatement(node.body);
978 }
979
980 visitSuperInitializer(SuperInitializer node) {
981 node.arguments.forEach(visitStatement);
982 }
983
984 visitGetField(GetField node) { 1010 visitGetField(GetField node) {
985 visitExpression(node.object); 1011 visitExpression(node.object);
986 } 1012 }
987 1013
988 visitSetField(SetField node) { 1014 visitSetField(SetField node) {
989 visitExpression(node.object); 1015 visitExpression(node.object);
990 visitExpression(node.value); 1016 visitExpression(node.value);
991 visitStatement(node.next); 1017 visitStatement(node.next);
992 } 1018 }
993 1019
994 visitCreateBox(CreateBox node) { 1020 visitCreateBox(CreateBox node) {
995 } 1021 }
996 1022
997 visitCreateInstance(CreateInstance node) { 1023 visitCreateInstance(CreateInstance node) {
998 node.arguments.forEach(visitExpression); 1024 node.arguments.forEach(visitExpression);
999 } 1025 }
1000 } 1026 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698