OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 #import('parser_helper.dart'); | 5 #import('parser_helper.dart'); |
6 #import("../../../lib/compiler/implementation/scanner/scannerlib.dart"); | 6 #import("../../../lib/compiler/implementation/scanner/scannerlib.dart"); |
7 #import("../../../lib/compiler/implementation/tree/tree.dart"); | 7 #import("../../../lib/compiler/implementation/tree/tree.dart"); |
8 | 8 |
9 | 9 |
10 void testNode(Node node, String expected, String text, [bool hard = true]) { | 10 void testNode(Node node, String expected, String text, [bool hard = true]) { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 SendSet sendSet; | 137 SendSet sendSet; |
138 String text; | 138 String text; |
139 | 139 |
140 text = "a.b++"; | 140 text = "a.b++"; |
141 node = testExpression(text); | 141 node = testExpression(text); |
142 // Should parse as: (a.b)++. | 142 // Should parse as: (a.b)++. |
143 Expect.isNotNull(sendSet = node.asSendSet()); | 143 Expect.isNotNull(sendSet = node.asSendSet()); |
144 testNode(sendSet.receiver, "a", text); | 144 testNode(sendSet.receiver, "a", text); |
145 testNode(sendSet.selector, "b", text); | 145 testNode(sendSet.selector, "b", text); |
146 testNode(sendSet.assignmentOperator, "++", text); | 146 testNode(sendSet.assignmentOperator, "++", text); |
147 Expect.isTrue(sendSet.arguments.isEmpty()); | 147 Expect.isTrue(sendSet.arguments.isEmpty); |
148 | 148 |
149 text = "++a[b]"; | 149 text = "++a[b]"; |
150 // TODO(johnniwinther): SendSet generates the wrong end token in the following | 150 // TODO(johnniwinther): SendSet generates the wrong end token in the following |
151 // line. We should have [:testExpression(text):] instead of | 151 // line. We should have [:testExpression(text):] instead of |
152 // [:testExpression(text, "++a"):]. | 152 // [:testExpression(text, "++a"):]. |
153 node = testExpression(text, "++a"); | 153 node = testExpression(text, "++a"); |
154 Expect.isNotNull(sendSet = node.asSendSet()); | 154 Expect.isNotNull(sendSet = node.asSendSet()); |
155 testNode(sendSet.receiver, "a", text); | 155 testNode(sendSet.receiver, "a", text); |
156 testNode(sendSet.selector, "[]", text, false); // Operator token is synthetic. | 156 testNode(sendSet.selector, "[]", text, false); // Operator token is synthetic. |
157 testNode(sendSet.assignmentOperator, "++", text); | 157 testNode(sendSet.assignmentOperator, "++", text); |
158 testNode(sendSet.arguments.head, "b", text); | 158 testNode(sendSet.arguments.head, "b", text); |
159 | 159 |
160 text = "a[b]++"; | 160 text = "a[b]++"; |
161 node = testExpression(text); | 161 node = testExpression(text); |
162 Expect.isNotNull(sendSet = node.asSendSet()); | 162 Expect.isNotNull(sendSet = node.asSendSet()); |
163 testNode(sendSet.receiver, "a", text); | 163 testNode(sendSet.receiver, "a", text); |
164 testNode(sendSet.selector, "[]", text, false); // Operator token is synthetic. | 164 testNode(sendSet.selector, "[]", text, false); // Operator token is synthetic. |
165 testNode(sendSet.assignmentOperator, "++", text); | 165 testNode(sendSet.assignmentOperator, "++", text); |
166 testNode(sendSet.arguments.head, "b", text); | 166 testNode(sendSet.arguments.head, "b", text); |
167 } | 167 } |
168 | 168 |
169 void main() { | 169 void main() { |
170 testUnaryExpression(); | 170 testUnaryExpression(); |
171 testAssignment(); | 171 testAssignment(); |
172 testIndex(); | 172 testIndex(); |
173 testPostfix(); | 173 testPostfix(); |
174 } | 174 } |
OLD | NEW |