| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 dart2js.send_structure; | 5 library dart2js.send_structure; |
| 6 | 6 |
| 7 import 'access_semantics.dart'; | 7 import 'access_semantics.dart'; |
| 8 import 'operators.dart'; | 8 import 'operators.dart'; |
| 9 import 'semantic_visitor.dart'; | 9 import 'semantic_visitor.dart'; |
| 10 import '../dart_types.dart'; | 10 import '../dart_types.dart'; |
| (...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 828 | 828 |
| 829 NotStructure(this.semantics); | 829 NotStructure(this.semantics); |
| 830 | 830 |
| 831 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { | 831 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { |
| 832 switch (semantics.kind) { | 832 switch (semantics.kind) { |
| 833 case AccessKind.DYNAMIC_PROPERTY: | 833 case AccessKind.DYNAMIC_PROPERTY: |
| 834 return visitor.visitNot( | 834 return visitor.visitNot( |
| 835 node, | 835 node, |
| 836 node.receiver, | 836 node.receiver, |
| 837 arg); | 837 arg); |
| 838 default: | 838 default: |
| 839 // This is not a valid case. | 839 // This is not a valid case. |
| 840 break; | 840 break; |
| 841 } | 841 } |
| 842 throw new SpannableAssertionFailure(node, "Invalid setter: ${semantics}"); | 842 throw new SpannableAssertionFailure(node, "Invalid setter: ${semantics}"); |
| 843 } | 843 } |
| 844 | 844 |
| 845 String toString() => 'not($semantics)'; | 845 String toString() => 'not($semantics)'; |
| 846 } | 846 } |
| 847 | 847 |
| 848 /// The structure for a [Send] that is an invocation of a user definable unary | 848 /// The structure for a [Send] that is an invocation of a user definable unary |
| (...skipping 20 matching lines...) Expand all Loading... |
| 869 node, | 869 node, |
| 870 operator, | 870 operator, |
| 871 semantics.element, | 871 semantics.element, |
| 872 arg); | 872 arg); |
| 873 case AccessKind.UNRESOLVED_SUPER: | 873 case AccessKind.UNRESOLVED_SUPER: |
| 874 return visitor.visitUnresolvedSuperUnary( | 874 return visitor.visitUnresolvedSuperUnary( |
| 875 node, | 875 node, |
| 876 operator, | 876 operator, |
| 877 semantics.element, | 877 semantics.element, |
| 878 arg); | 878 arg); |
| 879 case AccessKind.INVALID: |
| 880 return visitor.errorInvalidUnary( |
| 881 node, |
| 882 operator, |
| 883 semantics.element, |
| 884 arg); |
| 879 default: | 885 default: |
| 880 // This is not a valid case. | 886 // This is not a valid case. |
| 881 break; | 887 break; |
| 882 } | 888 } |
| 883 throw new SpannableAssertionFailure(node, "Invalid setter: ${semantics}"); | 889 throw new SpannableAssertionFailure(node, "Invalid setter: ${semantics}"); |
| 884 } | 890 } |
| 885 | 891 |
| 886 String toString() => 'unary($operator,$semantics)'; | 892 String toString() => 'unary($operator,$semantics)'; |
| 887 } | 893 } |
| 888 | 894 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 924 node, | 930 node, |
| 925 semantics.element, | 931 semantics.element, |
| 926 node.arguments.single, | 932 node.arguments.single, |
| 927 arg); | 933 arg); |
| 928 case AccessKind.UNRESOLVED_SUPER: | 934 case AccessKind.UNRESOLVED_SUPER: |
| 929 return visitor.visitUnresolvedSuperIndex( | 935 return visitor.visitUnresolvedSuperIndex( |
| 930 node, | 936 node, |
| 931 semantics.element, | 937 semantics.element, |
| 932 node.arguments.single, | 938 node.arguments.single, |
| 933 arg); | 939 arg); |
| 940 case AccessKind.INVALID: |
| 941 return visitor.errorInvalidIndex( |
| 942 node, |
| 943 semantics.element, |
| 944 node.arguments.single, |
| 945 arg); |
| 934 default: | 946 default: |
| 935 // This is not a valid case. | 947 // This is not a valid case. |
| 936 break; | 948 break; |
| 937 } | 949 } |
| 938 throw new SpannableAssertionFailure(node, "Invalid index: ${semantics}"); | 950 throw new SpannableAssertionFailure(node, "Invalid index: ${semantics}"); |
| 939 } | 951 } |
| 940 } | 952 } |
| 941 | 953 |
| 942 /// The structure for a [Send] that is an equals test, i.e. of the form | 954 /// The structure for a [Send] that is an equals test, i.e. of the form |
| 943 /// `a == b`. | 955 /// `a == b`. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 954 node, | 966 node, |
| 955 node.receiver, | 967 node.receiver, |
| 956 node.arguments.single, | 968 node.arguments.single, |
| 957 arg); | 969 arg); |
| 958 case AccessKind.SUPER_METHOD: | 970 case AccessKind.SUPER_METHOD: |
| 959 return visitor.visitSuperEquals( | 971 return visitor.visitSuperEquals( |
| 960 node, | 972 node, |
| 961 semantics.element, | 973 semantics.element, |
| 962 node.arguments.single, | 974 node.arguments.single, |
| 963 arg); | 975 arg); |
| 976 case AccessKind.INVALID: |
| 977 return visitor.errorInvalidEquals( |
| 978 node, |
| 979 semantics.element, |
| 980 node.arguments.single, |
| 981 arg); |
| 964 default: | 982 default: |
| 965 // This is not a valid case. | 983 // This is not a valid case. |
| 966 break; | 984 break; |
| 967 } | 985 } |
| 968 throw new SpannableAssertionFailure(node, "Invalid equals: ${semantics}"); | 986 throw new SpannableAssertionFailure(node, "Invalid equals: ${semantics}"); |
| 969 } | 987 } |
| 970 | 988 |
| 971 String toString() => '==($semantics)'; | 989 String toString() => '==($semantics)'; |
| 972 } | 990 } |
| 973 | 991 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 986 node, | 1004 node, |
| 987 node.receiver, | 1005 node.receiver, |
| 988 node.arguments.single, | 1006 node.arguments.single, |
| 989 arg); | 1007 arg); |
| 990 case AccessKind.SUPER_METHOD: | 1008 case AccessKind.SUPER_METHOD: |
| 991 return visitor.visitSuperNotEquals( | 1009 return visitor.visitSuperNotEquals( |
| 992 node, | 1010 node, |
| 993 semantics.element, | 1011 semantics.element, |
| 994 node.arguments.single, | 1012 node.arguments.single, |
| 995 arg); | 1013 arg); |
| 1014 case AccessKind.INVALID: |
| 1015 return visitor.errorInvalidNotEquals( |
| 1016 node, |
| 1017 semantics.element, |
| 1018 node.arguments.single, |
| 1019 arg); |
| 996 default: | 1020 default: |
| 997 // This is not a valid case. | 1021 // This is not a valid case. |
| 998 break; | 1022 break; |
| 999 } | 1023 } |
| 1000 throw new SpannableAssertionFailure( | 1024 throw new SpannableAssertionFailure( |
| 1001 node, "Invalid not equals: ${semantics}"); | 1025 node, "Invalid not equals: ${semantics}"); |
| 1002 } | 1026 } |
| 1003 | 1027 |
| 1004 String toString() => '!=($semantics)'; | 1028 String toString() => '!=($semantics)'; |
| 1005 } | 1029 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1031 operator, | 1055 operator, |
| 1032 node.arguments.single, | 1056 node.arguments.single, |
| 1033 arg); | 1057 arg); |
| 1034 case AccessKind.UNRESOLVED_SUPER: | 1058 case AccessKind.UNRESOLVED_SUPER: |
| 1035 return visitor.visitUnresolvedSuperBinary( | 1059 return visitor.visitUnresolvedSuperBinary( |
| 1036 node, | 1060 node, |
| 1037 semantics.element, | 1061 semantics.element, |
| 1038 operator, | 1062 operator, |
| 1039 node.arguments.single, | 1063 node.arguments.single, |
| 1040 arg); | 1064 arg); |
| 1065 case AccessKind.INVALID: |
| 1066 return visitor.errorInvalidBinary( |
| 1067 node, |
| 1068 semantics.element, |
| 1069 operator, |
| 1070 node.arguments.single, |
| 1071 arg); |
| 1041 default: | 1072 default: |
| 1042 // This is not a valid case. | 1073 // This is not a valid case. |
| 1043 break; | 1074 break; |
| 1044 } | 1075 } |
| 1045 throw new SpannableAssertionFailure( | 1076 throw new SpannableAssertionFailure( |
| 1046 node, "Invalid binary: ${semantics}"); | 1077 node, "Invalid binary: ${semantics}"); |
| 1047 } | 1078 } |
| 1048 | 1079 |
| 1049 String toString() => 'binary($operator,$semantics)'; | 1080 String toString() => 'binary($operator,$semantics)'; |
| 1050 } | 1081 } |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1095 node.arguments.tail.head, | 1126 node.arguments.tail.head, |
| 1096 arg); | 1127 arg); |
| 1097 case AccessKind.UNRESOLVED_SUPER: | 1128 case AccessKind.UNRESOLVED_SUPER: |
| 1098 case AccessKind.UNRESOLVED: | 1129 case AccessKind.UNRESOLVED: |
| 1099 return visitor.visitUnresolvedSuperIndexSet( | 1130 return visitor.visitUnresolvedSuperIndexSet( |
| 1100 node, | 1131 node, |
| 1101 semantics.element, | 1132 semantics.element, |
| 1102 node.arguments.first, | 1133 node.arguments.first, |
| 1103 node.arguments.tail.head, | 1134 node.arguments.tail.head, |
| 1104 arg); | 1135 arg); |
| 1136 case AccessKind.INVALID: |
| 1137 return visitor.errorInvalidIndexSet( |
| 1138 node, |
| 1139 semantics.element, |
| 1140 node.arguments.first, |
| 1141 node.arguments.tail.head, |
| 1142 arg); |
| 1105 default: | 1143 default: |
| 1106 // This is not a valid case. | 1144 // This is not a valid case. |
| 1107 break; | 1145 break; |
| 1108 } | 1146 } |
| 1109 throw new SpannableAssertionFailure( | 1147 throw new SpannableAssertionFailure( |
| 1110 node, "Invalid index set: ${semantics}"); | 1148 node, "Invalid index set: ${semantics}"); |
| 1111 } | 1149 } |
| 1112 | 1150 |
| 1113 String toString() => '[]=($semantics)'; | 1151 String toString() => '[]=($semantics)'; |
| 1114 } | 1152 } |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1144 node.arguments.single, | 1182 node.arguments.single, |
| 1145 operator, | 1183 operator, |
| 1146 arg); | 1184 arg); |
| 1147 case AccessKind.UNRESOLVED_SUPER: | 1185 case AccessKind.UNRESOLVED_SUPER: |
| 1148 return visitor.visitUnresolvedSuperIndexPrefix( | 1186 return visitor.visitUnresolvedSuperIndexPrefix( |
| 1149 node, | 1187 node, |
| 1150 semantics.element, | 1188 semantics.element, |
| 1151 node.arguments.single, | 1189 node.arguments.single, |
| 1152 operator, | 1190 operator, |
| 1153 arg); | 1191 arg); |
| 1192 case AccessKind.INVALID: |
| 1193 return visitor.errorInvalidIndexPrefix( |
| 1194 node, |
| 1195 semantics.element, |
| 1196 node.arguments.single, |
| 1197 operator, |
| 1198 arg); |
| 1154 case AccessKind.COMPOUND: | 1199 case AccessKind.COMPOUND: |
| 1155 CompoundAccessSemantics compoundSemantics = semantics; | 1200 CompoundAccessSemantics compoundSemantics = semantics; |
| 1156 switch (compoundSemantics.compoundAccessKind) { | 1201 switch (compoundSemantics.compoundAccessKind) { |
| 1157 case CompoundAccessKind.SUPER_GETTER_SETTER: | 1202 case CompoundAccessKind.SUPER_GETTER_SETTER: |
| 1158 return visitor.visitSuperIndexPrefix( | 1203 return visitor.visitSuperIndexPrefix( |
| 1159 node, | 1204 node, |
| 1160 compoundSemantics.getter, | 1205 compoundSemantics.getter, |
| 1161 compoundSemantics.setter, | 1206 compoundSemantics.setter, |
| 1162 node.arguments.single, | 1207 node.arguments.single, |
| 1163 operator, | 1208 operator, |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1223 node.arguments.single, | 1268 node.arguments.single, |
| 1224 operator, | 1269 operator, |
| 1225 arg); | 1270 arg); |
| 1226 case AccessKind.UNRESOLVED_SUPER: | 1271 case AccessKind.UNRESOLVED_SUPER: |
| 1227 return visitor.visitUnresolvedSuperIndexPostfix( | 1272 return visitor.visitUnresolvedSuperIndexPostfix( |
| 1228 node, | 1273 node, |
| 1229 semantics.element, | 1274 semantics.element, |
| 1230 node.arguments.single, | 1275 node.arguments.single, |
| 1231 operator, | 1276 operator, |
| 1232 arg); | 1277 arg); |
| 1278 case AccessKind.INVALID: |
| 1279 return visitor.errorInvalidIndexPostfix( |
| 1280 node, |
| 1281 semantics.element, |
| 1282 node.arguments.single, |
| 1283 operator, |
| 1284 arg); |
| 1233 case AccessKind.COMPOUND: | 1285 case AccessKind.COMPOUND: |
| 1234 CompoundAccessSemantics compoundSemantics = semantics; | 1286 CompoundAccessSemantics compoundSemantics = semantics; |
| 1235 switch (compoundSemantics.compoundAccessKind) { | 1287 switch (compoundSemantics.compoundAccessKind) { |
| 1236 case CompoundAccessKind.SUPER_GETTER_SETTER: | 1288 case CompoundAccessKind.SUPER_GETTER_SETTER: |
| 1237 return visitor.visitSuperIndexPostfix( | 1289 return visitor.visitSuperIndexPostfix( |
| 1238 node, | 1290 node, |
| 1239 compoundSemantics.getter, | 1291 compoundSemantics.getter, |
| 1240 compoundSemantics.setter, | 1292 compoundSemantics.setter, |
| 1241 node.arguments.single, | 1293 node.arguments.single, |
| 1242 operator, | 1294 operator, |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1651 node.arguments.tail.head, | 1703 node.arguments.tail.head, |
| 1652 arg); | 1704 arg); |
| 1653 case AccessKind.UNRESOLVED_SUPER: | 1705 case AccessKind.UNRESOLVED_SUPER: |
| 1654 return visitor.visitUnresolvedSuperCompoundIndexSet( | 1706 return visitor.visitUnresolvedSuperCompoundIndexSet( |
| 1655 node, | 1707 node, |
| 1656 semantics.element, | 1708 semantics.element, |
| 1657 node.arguments.first, | 1709 node.arguments.first, |
| 1658 operator, | 1710 operator, |
| 1659 node.arguments.tail.head, | 1711 node.arguments.tail.head, |
| 1660 arg); | 1712 arg); |
| 1713 case AccessKind.INVALID: |
| 1714 return visitor.errorInvalidCompoundIndexSet( |
| 1715 node, |
| 1716 semantics.element, |
| 1717 node.arguments.first, |
| 1718 operator, |
| 1719 node.arguments.tail.head, |
| 1720 arg); |
| 1661 case AccessKind.COMPOUND: | 1721 case AccessKind.COMPOUND: |
| 1662 CompoundAccessSemantics compoundSemantics = semantics; | 1722 CompoundAccessSemantics compoundSemantics = semantics; |
| 1663 switch (compoundSemantics.compoundAccessKind) { | 1723 switch (compoundSemantics.compoundAccessKind) { |
| 1664 case CompoundAccessKind.SUPER_GETTER_SETTER: | 1724 case CompoundAccessKind.SUPER_GETTER_SETTER: |
| 1665 return visitor.visitSuperCompoundIndexSet( | 1725 return visitor.visitSuperCompoundIndexSet( |
| 1666 node, | 1726 node, |
| 1667 compoundSemantics.getter, | 1727 compoundSemantics.getter, |
| 1668 compoundSemantics.setter, | 1728 compoundSemantics.setter, |
| 1669 node.arguments.first, | 1729 node.arguments.first, |
| 1670 operator, | 1730 operator, |
| (...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2691 ThisConstructorInvokeStructure( | 2751 ThisConstructorInvokeStructure( |
| 2692 this.node, this.constructor, this.callStructure); | 2752 this.node, this.constructor, this.callStructure); |
| 2693 | 2753 |
| 2694 R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) { | 2754 R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) { |
| 2695 return visitor.visitThisConstructorInvoke( | 2755 return visitor.visitThisConstructorInvoke( |
| 2696 node, constructor, node.argumentsNode, callStructure, arg); | 2756 node, constructor, node.argumentsNode, callStructure, arg); |
| 2697 } | 2757 } |
| 2698 | 2758 |
| 2699 bool get isConstructorInvoke => true; | 2759 bool get isConstructorInvoke => true; |
| 2700 } | 2760 } |
| OLD | NEW |