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

Side by Side Diff: lib/compiler/implementation/scanner/listener.dart

Issue 10540048: Implement 'as' operator. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: No entries in language.status, vm and dartc already implemented 'as'. Created 8 years, 5 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 final bool VERBOSE = false; 5 final bool VERBOSE = false;
6 6
7 /** 7 /**
8 * A parser event listener that does nothing except throw exceptions 8 * A parser event listener that does nothing except throw exceptions
9 * on parser errors. 9 * on parser errors.
10 */ 10 */
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 298
299 void endVariablesDeclaration(int count, Token endToken) { 299 void endVariablesDeclaration(int count, Token endToken) {
300 } 300 }
301 301
302 void beginWhileStatement(Token token) { 302 void beginWhileStatement(Token token) {
303 } 303 }
304 304
305 void endWhileStatement(Token whileKeyword, Token endToken) { 305 void endWhileStatement(Token whileKeyword, Token endToken) {
306 } 306 }
307 307
308 void handleAsOperator(Token operathor, Token endToken) {
309 // TODO(ahe): Rename [operathor] to "operator" when VM bug is fixed.
310 }
311
308 void handleAssignmentExpression(Token token) { 312 void handleAssignmentExpression(Token token) {
309 } 313 }
310 314
311 void handleBinaryExpression(Token token) { 315 void handleBinaryExpression(Token token) {
312 } 316 }
313 317
314 void handleConditionalExpression(Token question, Token colon) { 318 void handleConditionalExpression(Token question, Token colon) {
315 } 319 }
316 320
317 void handleConstExpression(Token token, bool named) { 321 void handleConstExpression(Token token, bool named) {
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 } 1052 }
1049 1053
1050 void beginCascade(Token token) { 1054 void beginCascade(Token token) {
1051 pushNode(new CascadeReceiver(popNode(), token)); 1055 pushNode(new CascadeReceiver(popNode(), token));
1052 } 1056 }
1053 1057
1054 void endCascade() { 1058 void endCascade() {
1055 pushNode(new Cascade(popNode())); 1059 pushNode(new Cascade(popNode()));
1056 } 1060 }
1057 1061
1062 void handleAsOperator(Token operathor, Token endToken) {
1063 TypeAnnotation type = popNode();
1064 Expression expression = popNode();
1065 NodeList arguments = new NodeList.singleton(type);
1066 pushNode(new Send(expression, new Operator(operathor), arguments));
1067 }
1068
1058 void handleAssignmentExpression(Token token) { 1069 void handleAssignmentExpression(Token token) {
1059 Node arg = popNode(); 1070 Node arg = popNode();
1060 Node node = popNode(); 1071 Node node = popNode();
1061 Send send = node.asSend(); 1072 Send send = node.asSend();
1062 if (send === null) internalError(node: node); 1073 if (send === null) internalError(node: node);
1063 if (!(send.isPropertyAccess || send.isIndex)) internalError(node: send); 1074 if (!(send.isPropertyAccess || send.isIndex)) internalError(node: send);
1064 if (send.asSendSet() !== null) internalError(node: send); 1075 if (send.asSendSet() !== null) internalError(node: send);
1065 NodeList arguments; 1076 NodeList arguments;
1066 if (send.isIndex) { 1077 if (send.isIndex) {
1067 Link<Node> link = new Link<Node>(arg); 1078 Link<Node> link = new Link<Node>(arg);
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1529 1540
1530 Node parse(DiagnosticListener diagnosticListener, 1541 Node parse(DiagnosticListener diagnosticListener,
1531 CompilationUnitElement element, 1542 CompilationUnitElement element,
1532 doParse(Parser parser)) { 1543 doParse(Parser parser)) {
1533 NodeListener listener = new NodeListener(diagnosticListener, element); 1544 NodeListener listener = new NodeListener(diagnosticListener, element);
1534 doParse(new Parser(listener)); 1545 doParse(new Parser(listener));
1535 Node node = listener.popNode(); 1546 Node node = listener.popNode();
1536 assert(listener.nodes.isEmpty()); 1547 assert(listener.nodes.isEmpty());
1537 return node; 1548 return node;
1538 } 1549 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698