| 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 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 | 895 |
| 896 accept(ExpressionVisitor visitor) { | 896 accept(ExpressionVisitor visitor) { |
| 897 return visitor.visitReadTypeVariable(this); | 897 return visitor.visitReadTypeVariable(this); |
| 898 } | 898 } |
| 899 | 899 |
| 900 accept1(ExpressionVisitor1 visitor, arg) { | 900 accept1(ExpressionVisitor1 visitor, arg) { |
| 901 return visitor.visitReadTypeVariable(this, arg); | 901 return visitor.visitReadTypeVariable(this, arg); |
| 902 } | 902 } |
| 903 } | 903 } |
| 904 | 904 |
| 905 class CreateInvocationMirror extends Expression implements JsSpecificNode { |
| 906 final Selector selector; |
| 907 final List<Expression> arguments; |
| 908 |
| 909 CreateInvocationMirror(this.selector, this.arguments); |
| 910 |
| 911 accept(ExpressionVisitor visitor) { |
| 912 return visitor.visitCreateInvocationMirror(this); |
| 913 } |
| 914 |
| 915 accept1(ExpressionVisitor1 visitor, arg) { |
| 916 return visitor.visitCreateInvocationMirror(this, arg); |
| 917 } |
| 918 } |
| 919 |
| 905 /// Denotes the internal representation of [dartType], where all type variables | 920 /// Denotes the internal representation of [dartType], where all type variables |
| 906 /// are replaced by the values in [arguments]. | 921 /// are replaced by the values in [arguments]. |
| 907 /// (See documentation on the TypeExpression CPS node for more details.) | 922 /// (See documentation on the TypeExpression CPS node for more details.) |
| 908 class TypeExpression extends Expression { | 923 class TypeExpression extends Expression { |
| 909 final DartType dartType; | 924 final DartType dartType; |
| 910 final List<Expression> arguments; | 925 final List<Expression> arguments; |
| 911 | 926 |
| 912 TypeExpression(this.dartType, this.arguments); | 927 TypeExpression(this.dartType, this.arguments); |
| 913 | 928 |
| 914 accept(ExpressionVisitor visitor) { | 929 accept(ExpressionVisitor visitor) { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 939 E visitLiteralMap(LiteralMap node); | 954 E visitLiteralMap(LiteralMap node); |
| 940 E visitTypeOperator(TypeOperator node); | 955 E visitTypeOperator(TypeOperator node); |
| 941 E visitFunctionExpression(FunctionExpression node); | 956 E visitFunctionExpression(FunctionExpression node); |
| 942 E visitGetField(GetField node); | 957 E visitGetField(GetField node); |
| 943 E visitCreateBox(CreateBox node); | 958 E visitCreateBox(CreateBox node); |
| 944 E visitCreateInstance(CreateInstance node); | 959 E visitCreateInstance(CreateInstance node); |
| 945 E visitReifyRuntimeType(ReifyRuntimeType node); | 960 E visitReifyRuntimeType(ReifyRuntimeType node); |
| 946 E visitReadTypeVariable(ReadTypeVariable node); | 961 E visitReadTypeVariable(ReadTypeVariable node); |
| 947 E visitTypeExpression(TypeExpression node); | 962 E visitTypeExpression(TypeExpression node); |
| 948 E visitSetField(SetField node); | 963 E visitSetField(SetField node); |
| 964 E visitCreateInvocationMirror(CreateInvocationMirror node); |
| 949 } | 965 } |
| 950 | 966 |
| 951 abstract class ExpressionVisitor1<E, A> { | 967 abstract class ExpressionVisitor1<E, A> { |
| 952 E visitExpression(Expression node, A arg) => node.accept1(this, arg); | 968 E visitExpression(Expression node, A arg) => node.accept1(this, arg); |
| 953 E visitVariableUse(VariableUse node, A arg); | 969 E visitVariableUse(VariableUse node, A arg); |
| 954 E visitAssign(Assign node, A arg); | 970 E visitAssign(Assign node, A arg); |
| 955 E visitInvokeStatic(InvokeStatic node, A arg); | 971 E visitInvokeStatic(InvokeStatic node, A arg); |
| 956 E visitInvokeMethod(InvokeMethod node, A arg); | 972 E visitInvokeMethod(InvokeMethod node, A arg); |
| 957 E visitInvokeMethodDirectly(InvokeMethodDirectly node, A arg); | 973 E visitInvokeMethodDirectly(InvokeMethodDirectly node, A arg); |
| 958 E visitInvokeConstructor(InvokeConstructor node, A arg); | 974 E visitInvokeConstructor(InvokeConstructor node, A arg); |
| 959 E visitConcatenateStrings(ConcatenateStrings node, A arg); | 975 E visitConcatenateStrings(ConcatenateStrings node, A arg); |
| 960 E visitConstant(Constant node, A arg); | 976 E visitConstant(Constant node, A arg); |
| 961 E visitThis(This node, A arg); | 977 E visitThis(This node, A arg); |
| 962 E visitReifyTypeVar(ReifyTypeVar node, A arg); | 978 E visitReifyTypeVar(ReifyTypeVar node, A arg); |
| 963 E visitConditional(Conditional node, A arg); | 979 E visitConditional(Conditional node, A arg); |
| 964 E visitLogicalOperator(LogicalOperator node, A arg); | 980 E visitLogicalOperator(LogicalOperator node, A arg); |
| 965 E visitNot(Not node, A arg); | 981 E visitNot(Not node, A arg); |
| 966 E visitLiteralList(LiteralList node, A arg); | 982 E visitLiteralList(LiteralList node, A arg); |
| 967 E visitLiteralMap(LiteralMap node, A arg); | 983 E visitLiteralMap(LiteralMap node, A arg); |
| 968 E visitTypeOperator(TypeOperator node, A arg); | 984 E visitTypeOperator(TypeOperator node, A arg); |
| 969 E visitFunctionExpression(FunctionExpression node, A arg); | 985 E visitFunctionExpression(FunctionExpression node, A arg); |
| 970 E visitGetField(GetField node, A arg); | 986 E visitGetField(GetField node, A arg); |
| 971 E visitCreateBox(CreateBox node, A arg); | 987 E visitCreateBox(CreateBox node, A arg); |
| 972 E visitCreateInstance(CreateInstance node, A arg); | 988 E visitCreateInstance(CreateInstance node, A arg); |
| 973 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); | 989 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); |
| 974 E visitReadTypeVariable(ReadTypeVariable node, A arg); | 990 E visitReadTypeVariable(ReadTypeVariable node, A arg); |
| 975 E visitTypeExpression(TypeExpression node, A arg); | 991 E visitTypeExpression(TypeExpression node, A arg); |
| 976 E visitSetField(SetField node, A arg); | 992 E visitSetField(SetField node, A arg); |
| 993 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg); |
| 977 } | 994 } |
| 978 | 995 |
| 979 abstract class StatementVisitor<S> { | 996 abstract class StatementVisitor<S> { |
| 980 S visitStatement(Statement node) => node.accept(this); | 997 S visitStatement(Statement node) => node.accept(this); |
| 981 S visitLabeledStatement(LabeledStatement node); | 998 S visitLabeledStatement(LabeledStatement node); |
| 982 S visitReturn(Return node); | 999 S visitReturn(Return node); |
| 983 S visitThrow(Throw node); | 1000 S visitThrow(Throw node); |
| 984 S visitRethrow(Rethrow node); | 1001 S visitRethrow(Rethrow node); |
| 985 S visitBreak(Break node); | 1002 S visitBreak(Break node); |
| 986 S visitContinue(Continue node); | 1003 S visitContinue(Continue node); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1192 visitExpression(node.value); | 1209 visitExpression(node.value); |
| 1193 } | 1210 } |
| 1194 | 1211 |
| 1195 visitReadTypeVariable(ReadTypeVariable node) { | 1212 visitReadTypeVariable(ReadTypeVariable node) { |
| 1196 visitExpression(node.target); | 1213 visitExpression(node.target); |
| 1197 } | 1214 } |
| 1198 | 1215 |
| 1199 visitTypeExpression(TypeExpression node) { | 1216 visitTypeExpression(TypeExpression node) { |
| 1200 node.arguments.forEach(visitExpression); | 1217 node.arguments.forEach(visitExpression); |
| 1201 } | 1218 } |
| 1219 |
| 1220 visitCreateInvocationMirror(CreateInvocationMirror node) { |
| 1221 node.arguments.forEach(visitExpression); |
| 1222 } |
| 1202 } | 1223 } |
| 1203 | 1224 |
| 1204 abstract class Transformer implements ExpressionVisitor<Expression>, | 1225 abstract class Transformer implements ExpressionVisitor<Expression>, |
| 1205 StatementVisitor<Statement> { | 1226 StatementVisitor<Statement> { |
| 1206 Expression visitExpression(Expression e) => e.accept(this); | 1227 Expression visitExpression(Expression e) => e.accept(this); |
| 1207 Statement visitStatement(Statement s) => s.accept(this); | 1228 Statement visitStatement(Statement s) => s.accept(this); |
| 1208 } | 1229 } |
| 1209 | 1230 |
| 1210 class RecursiveTransformer extends Transformer { | 1231 class RecursiveTransformer extends Transformer { |
| 1211 void visitInnerFunction(FunctionDefinition node) { | 1232 void visitInnerFunction(FunctionDefinition node) { |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1388 | 1409 |
| 1389 visitReadTypeVariable(ReadTypeVariable node) { | 1410 visitReadTypeVariable(ReadTypeVariable node) { |
| 1390 node.target = visitExpression(node.target); | 1411 node.target = visitExpression(node.target); |
| 1391 return node; | 1412 return node; |
| 1392 } | 1413 } |
| 1393 | 1414 |
| 1394 visitTypeExpression(TypeExpression node) { | 1415 visitTypeExpression(TypeExpression node) { |
| 1395 _replaceExpressions(node.arguments); | 1416 _replaceExpressions(node.arguments); |
| 1396 return node; | 1417 return node; |
| 1397 } | 1418 } |
| 1419 |
| 1420 visitCreateInvocationMirror(CreateInvocationMirror node) { |
| 1421 _replaceExpressions(node.arguments); |
| 1422 return node; |
| 1423 } |
| 1398 } | 1424 } |
| OLD | NEW |