OLD | NEW |
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, InterfaceType, TypeVaria
bleType; | 9 import '../dart_types.dart' show DartType, GenericType, InterfaceType, TypeVaria
bleType; |
10 import '../elements/elements.dart'; | 10 import '../elements/elements.dart'; |
(...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
866 Expression object; | 866 Expression object; |
867 Element field; | 867 Element field; |
868 Expression value; | 868 Expression value; |
869 | 869 |
870 SetField(this.object, this.field, this.value); | 870 SetField(this.object, this.field, this.value); |
871 | 871 |
872 accept(ExpressionVisitor visitor) => visitor.visitSetField(this); | 872 accept(ExpressionVisitor visitor) => visitor.visitSetField(this); |
873 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetField(this, arg); | 873 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetField(this, arg); |
874 } | 874 } |
875 | 875 |
| 876 class GetStatic extends Expression { |
| 877 Element element; |
| 878 SourceInformation sourceInformation; |
| 879 |
| 880 GetStatic(this.element, this.sourceInformation); |
| 881 |
| 882 accept(ExpressionVisitor visitor) => visitor.visitGetStatic(this); |
| 883 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitGetStatic(this, arg); |
| 884 } |
| 885 |
| 886 |
| 887 class SetStatic extends Expression { |
| 888 Element element; |
| 889 Expression value; |
| 890 SourceInformation sourceInformation; |
| 891 |
| 892 SetStatic(this.element, this.value, this.sourceInformation); |
| 893 |
| 894 accept(ExpressionVisitor visitor) => visitor.visitSetStatic(this); |
| 895 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetStatic(this, arg); |
| 896 } |
| 897 |
876 class ReifyRuntimeType extends Expression implements JsSpecificNode { | 898 class ReifyRuntimeType extends Expression implements JsSpecificNode { |
877 Expression value; | 899 Expression value; |
878 | 900 |
879 ReifyRuntimeType(this.value); | 901 ReifyRuntimeType(this.value); |
880 | 902 |
881 accept(ExpressionVisitor visitor) { | 903 accept(ExpressionVisitor visitor) { |
882 return visitor.visitReifyRuntimeType(this); | 904 return visitor.visitReifyRuntimeType(this); |
883 } | 905 } |
884 | 906 |
885 accept1(ExpressionVisitor1 visitor, arg) { | 907 accept1(ExpressionVisitor1 visitor, arg) { |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
948 E visitThis(This node); | 970 E visitThis(This node); |
949 E visitReifyTypeVar(ReifyTypeVar node); | 971 E visitReifyTypeVar(ReifyTypeVar node); |
950 E visitConditional(Conditional node); | 972 E visitConditional(Conditional node); |
951 E visitLogicalOperator(LogicalOperator node); | 973 E visitLogicalOperator(LogicalOperator node); |
952 E visitNot(Not node); | 974 E visitNot(Not node); |
953 E visitLiteralList(LiteralList node); | 975 E visitLiteralList(LiteralList node); |
954 E visitLiteralMap(LiteralMap node); | 976 E visitLiteralMap(LiteralMap node); |
955 E visitTypeOperator(TypeOperator node); | 977 E visitTypeOperator(TypeOperator node); |
956 E visitFunctionExpression(FunctionExpression node); | 978 E visitFunctionExpression(FunctionExpression node); |
957 E visitGetField(GetField node); | 979 E visitGetField(GetField node); |
| 980 E visitSetField(SetField node); |
| 981 E visitGetStatic(GetStatic node); |
| 982 E visitSetStatic(SetStatic node); |
958 E visitCreateBox(CreateBox node); | 983 E visitCreateBox(CreateBox node); |
959 E visitCreateInstance(CreateInstance node); | 984 E visitCreateInstance(CreateInstance node); |
960 E visitReifyRuntimeType(ReifyRuntimeType node); | 985 E visitReifyRuntimeType(ReifyRuntimeType node); |
961 E visitReadTypeVariable(ReadTypeVariable node); | 986 E visitReadTypeVariable(ReadTypeVariable node); |
962 E visitTypeExpression(TypeExpression node); | 987 E visitTypeExpression(TypeExpression node); |
963 E visitSetField(SetField node); | |
964 E visitCreateInvocationMirror(CreateInvocationMirror node); | 988 E visitCreateInvocationMirror(CreateInvocationMirror node); |
965 } | 989 } |
966 | 990 |
967 abstract class ExpressionVisitor1<E, A> { | 991 abstract class ExpressionVisitor1<E, A> { |
968 E visitExpression(Expression node, A arg) => node.accept1(this, arg); | 992 E visitExpression(Expression node, A arg) => node.accept1(this, arg); |
969 E visitVariableUse(VariableUse node, A arg); | 993 E visitVariableUse(VariableUse node, A arg); |
970 E visitAssign(Assign node, A arg); | 994 E visitAssign(Assign node, A arg); |
971 E visitInvokeStatic(InvokeStatic node, A arg); | 995 E visitInvokeStatic(InvokeStatic node, A arg); |
972 E visitInvokeMethod(InvokeMethod node, A arg); | 996 E visitInvokeMethod(InvokeMethod node, A arg); |
973 E visitInvokeMethodDirectly(InvokeMethodDirectly node, A arg); | 997 E visitInvokeMethodDirectly(InvokeMethodDirectly node, A arg); |
974 E visitInvokeConstructor(InvokeConstructor node, A arg); | 998 E visitInvokeConstructor(InvokeConstructor node, A arg); |
975 E visitConcatenateStrings(ConcatenateStrings node, A arg); | 999 E visitConcatenateStrings(ConcatenateStrings node, A arg); |
976 E visitConstant(Constant node, A arg); | 1000 E visitConstant(Constant node, A arg); |
977 E visitThis(This node, A arg); | 1001 E visitThis(This node, A arg); |
978 E visitReifyTypeVar(ReifyTypeVar node, A arg); | 1002 E visitReifyTypeVar(ReifyTypeVar node, A arg); |
979 E visitConditional(Conditional node, A arg); | 1003 E visitConditional(Conditional node, A arg); |
980 E visitLogicalOperator(LogicalOperator node, A arg); | 1004 E visitLogicalOperator(LogicalOperator node, A arg); |
981 E visitNot(Not node, A arg); | 1005 E visitNot(Not node, A arg); |
982 E visitLiteralList(LiteralList node, A arg); | 1006 E visitLiteralList(LiteralList node, A arg); |
983 E visitLiteralMap(LiteralMap node, A arg); | 1007 E visitLiteralMap(LiteralMap node, A arg); |
984 E visitTypeOperator(TypeOperator node, A arg); | 1008 E visitTypeOperator(TypeOperator node, A arg); |
985 E visitFunctionExpression(FunctionExpression node, A arg); | 1009 E visitFunctionExpression(FunctionExpression node, A arg); |
986 E visitGetField(GetField node, A arg); | 1010 E visitGetField(GetField node, A arg); |
| 1011 E visitSetField(SetField node, A arg); |
| 1012 E visitGetStatic(GetStatic node, A arg); |
| 1013 E visitSetStatic(SetStatic node, A arg); |
987 E visitCreateBox(CreateBox node, A arg); | 1014 E visitCreateBox(CreateBox node, A arg); |
988 E visitCreateInstance(CreateInstance node, A arg); | 1015 E visitCreateInstance(CreateInstance node, A arg); |
989 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); | 1016 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); |
990 E visitReadTypeVariable(ReadTypeVariable node, A arg); | 1017 E visitReadTypeVariable(ReadTypeVariable node, A arg); |
991 E visitTypeExpression(TypeExpression node, A arg); | 1018 E visitTypeExpression(TypeExpression node, A arg); |
992 E visitSetField(SetField node, A arg); | |
993 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg); | 1019 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg); |
994 } | 1020 } |
995 | 1021 |
996 abstract class StatementVisitor<S> { | 1022 abstract class StatementVisitor<S> { |
997 S visitStatement(Statement node) => node.accept(this); | 1023 S visitStatement(Statement node) => node.accept(this); |
998 S visitLabeledStatement(LabeledStatement node); | 1024 S visitLabeledStatement(LabeledStatement node); |
999 S visitReturn(Return node); | 1025 S visitReturn(Return node); |
1000 S visitThrow(Throw node); | 1026 S visitThrow(Throw node); |
1001 S visitRethrow(Rethrow node); | 1027 S visitRethrow(Rethrow node); |
1002 S visitBreak(Break node); | 1028 S visitBreak(Break node); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1190 | 1216 |
1191 visitGetField(GetField node) { | 1217 visitGetField(GetField node) { |
1192 visitExpression(node.object); | 1218 visitExpression(node.object); |
1193 } | 1219 } |
1194 | 1220 |
1195 visitSetField(SetField node) { | 1221 visitSetField(SetField node) { |
1196 visitExpression(node.object); | 1222 visitExpression(node.object); |
1197 visitExpression(node.value); | 1223 visitExpression(node.value); |
1198 } | 1224 } |
1199 | 1225 |
| 1226 visitGetStatic(GetStatic node) { |
| 1227 } |
| 1228 |
| 1229 visitSetStatic(SetStatic node) { |
| 1230 visitExpression(node.value); |
| 1231 } |
| 1232 |
1200 visitCreateBox(CreateBox node) { | 1233 visitCreateBox(CreateBox node) { |
1201 } | 1234 } |
1202 | 1235 |
1203 visitCreateInstance(CreateInstance node) { | 1236 visitCreateInstance(CreateInstance node) { |
1204 node.arguments.forEach(visitExpression); | 1237 node.arguments.forEach(visitExpression); |
1205 node.typeInformation.forEach(visitExpression); | 1238 node.typeInformation.forEach(visitExpression); |
1206 } | 1239 } |
1207 | 1240 |
1208 visitReifyRuntimeType(ReifyRuntimeType node) { | 1241 visitReifyRuntimeType(ReifyRuntimeType node) { |
1209 visitExpression(node.value); | 1242 visitExpression(node.value); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1388 node.object = visitExpression(node.object); | 1421 node.object = visitExpression(node.object); |
1389 return node; | 1422 return node; |
1390 } | 1423 } |
1391 | 1424 |
1392 visitSetField(SetField node) { | 1425 visitSetField(SetField node) { |
1393 node.object = visitExpression(node.object); | 1426 node.object = visitExpression(node.object); |
1394 node.value = visitExpression(node.value); | 1427 node.value = visitExpression(node.value); |
1395 return node; | 1428 return node; |
1396 } | 1429 } |
1397 | 1430 |
| 1431 visitGetStatic(GetStatic node) => node; |
| 1432 |
| 1433 visitSetStatic(SetStatic node) { |
| 1434 node.value = visitExpression(node.value); |
| 1435 return node; |
| 1436 } |
| 1437 |
1398 visitCreateBox(CreateBox node) => node; | 1438 visitCreateBox(CreateBox node) => node; |
1399 | 1439 |
1400 visitCreateInstance(CreateInstance node) { | 1440 visitCreateInstance(CreateInstance node) { |
1401 _replaceExpressions(node.arguments); | 1441 _replaceExpressions(node.arguments); |
1402 return node; | 1442 return node; |
1403 } | 1443 } |
1404 | 1444 |
1405 visitReifyRuntimeType(ReifyRuntimeType node) { | 1445 visitReifyRuntimeType(ReifyRuntimeType node) { |
1406 node.value = visitExpression(node.value); | 1446 node.value = visitExpression(node.value); |
1407 return node; | 1447 return node; |
1408 } | 1448 } |
1409 | 1449 |
1410 visitReadTypeVariable(ReadTypeVariable node) { | 1450 visitReadTypeVariable(ReadTypeVariable node) { |
1411 node.target = visitExpression(node.target); | 1451 node.target = visitExpression(node.target); |
1412 return node; | 1452 return node; |
1413 } | 1453 } |
1414 | 1454 |
1415 visitTypeExpression(TypeExpression node) { | 1455 visitTypeExpression(TypeExpression node) { |
1416 _replaceExpressions(node.arguments); | 1456 _replaceExpressions(node.arguments); |
1417 return node; | 1457 return node; |
1418 } | 1458 } |
1419 | 1459 |
1420 visitCreateInvocationMirror(CreateInvocationMirror node) { | 1460 visitCreateInvocationMirror(CreateInvocationMirror node) { |
1421 _replaceExpressions(node.arguments); | 1461 _replaceExpressions(node.arguments); |
1422 return node; | 1462 return node; |
1423 } | 1463 } |
1424 } | 1464 } |
OLD | NEW |