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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/dart_backend/statement_rewriter.dart

Issue 658103003: Support map and list literals in analyzer2dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use LiteralMapEntry to ensure build order Created 6 years, 1 month 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) 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 statement_rewriter; 5 library statement_rewriter;
6 6
7 import 'tree_ir_nodes.dart'; 7 import 'tree_ir_nodes.dart';
8 8
9 /** 9 /**
10 * Performs the following transformations on the tree: 10 * Performs the following transformations on the tree:
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 Expression visitLiteralList(LiteralList node) { 350 Expression visitLiteralList(LiteralList node) {
351 // Process values right-to-left, the opposite of evaluation order. 351 // Process values right-to-left, the opposite of evaluation order.
352 for (int i = node.values.length - 1; i >= 0; --i) { 352 for (int i = node.values.length - 1; i >= 0; --i) {
353 node.values[i] = visitExpression(node.values[i]); 353 node.values[i] = visitExpression(node.values[i]);
354 } 354 }
355 return node; 355 return node;
356 } 356 }
357 357
358 Expression visitLiteralMap(LiteralMap node) { 358 Expression visitLiteralMap(LiteralMap node) {
359 // Process arguments right-to-left, the opposite of evaluation order. 359 // Process arguments right-to-left, the opposite of evaluation order.
360 for (int i = node.values.length - 1; i >= 0; --i) { 360 for (LiteralMapEntry entry in node.entries.reversed) {
361 node.values[i] = visitExpression(node.values[i]); 361 entry.value = visitExpression(entry.value);
362 node.keys[i] = visitExpression(node.keys[i]); 362 entry.key = visitExpression(entry.key);
363 } 363 }
364 return node; 364 return node;
365 } 365 }
366 366
367 Expression visitTypeOperator(TypeOperator node) { 367 Expression visitTypeOperator(TypeOperator node) {
368 node.receiver = visitExpression(node.receiver); 368 node.receiver = visitExpression(node.receiver);
369 return node; 369 return node;
370 } 370 }
371 371
372 Statement visitExpressionStatement(ExpressionStatement node) { 372 Statement visitExpressionStatement(ExpressionStatement node) {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 } 544 }
545 545
546 Expression makeCondition(Expression e, bool polarity) { 546 Expression makeCondition(Expression e, bool polarity) {
547 return polarity ? e : new Not(e); 547 return polarity ? e : new Not(e);
548 } 548 }
549 549
550 Statement getBranch(If node, bool polarity) { 550 Statement getBranch(If node, bool polarity) {
551 return polarity ? node.thenStatement : node.elseStatement; 551 return polarity ? node.thenStatement : node.elseStatement;
552 } 552 }
553 } 553 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698