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 part of js_ast; | 5 part of js_ast; |
6 | 6 |
7 class TemplateManager { | 7 class TemplateManager { |
8 Map<String, Template> expressionTemplates = new Map<String, Template>(); | 8 Map<String, Template> expressionTemplates = new Map<String, Template>(); |
9 Map<String, Template> statementTemplates = new Map<String, Template>(); | 9 Map<String, Template> statementTemplates = new Map<String, Template>(); |
10 | 10 |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 }; | 402 }; |
403 } | 403 } |
404 | 404 |
405 Instantiator visitFor(For node) { | 405 Instantiator visitFor(For node) { |
406 Instantiator makeInit = visitNullable(node.init); | 406 Instantiator makeInit = visitNullable(node.init); |
407 Instantiator makeCondition = visitNullable(node.condition); | 407 Instantiator makeCondition = visitNullable(node.condition); |
408 Instantiator makeUpdate = visitNullable(node.update); | 408 Instantiator makeUpdate = visitNullable(node.update); |
409 Instantiator makeBody = visit(node.body); | 409 Instantiator makeBody = visit(node.body); |
410 return (arguments) { | 410 return (arguments) { |
411 return new For(makeInit(arguments), makeCondition(arguments), | 411 return new For(makeInit(arguments), makeCondition(arguments), |
412 makeUpdate(arguments), makeBody(arguments)); | 412 makeUpdate(arguments)?.toVoidExpression(), makeBody(arguments)); |
413 }; | 413 }; |
414 } | 414 } |
415 | 415 |
416 Instantiator visitForIn(ForIn node) { | 416 Instantiator visitForIn(ForIn node) { |
417 Instantiator makeLeftHandSide = visit(node.leftHandSide); | 417 Instantiator makeLeftHandSide = visit(node.leftHandSide); |
418 Instantiator makeObject = visit(node.object); | 418 Instantiator makeObject = visit(node.object); |
419 Instantiator makeBody = visit(node.body); | 419 Instantiator makeBody = visit(node.body); |
420 return (arguments) { | 420 return (arguments) { |
421 return new ForIn(makeLeftHandSide(arguments), makeObject(arguments), | 421 return new ForIn(makeLeftHandSide(arguments), makeObject(arguments), |
422 makeBody(arguments)); | 422 makeBody(arguments)); |
(...skipping 30 matching lines...) Expand all Loading... |
453 }; | 453 }; |
454 } | 454 } |
455 | 455 |
456 Instantiator visitContinue(Continue node) => | 456 Instantiator visitContinue(Continue node) => |
457 (arguments) => new Continue(node.targetLabel); | 457 (arguments) => new Continue(node.targetLabel); |
458 | 458 |
459 Instantiator visitBreak(Break node) => | 459 Instantiator visitBreak(Break node) => |
460 (arguments) => new Break(node.targetLabel); | 460 (arguments) => new Break(node.targetLabel); |
461 | 461 |
462 Instantiator visitReturn(Return node) { | 462 Instantiator visitReturn(Return node) { |
463 Instantiator makeExpression = visitNullable(node.value); | 463 if (node.value == null) return (args) => new Return(); |
464 return (arguments) => new Return(makeExpression(arguments)); | 464 Instantiator makeExpression = visit(node.value); |
| 465 return (args) => makeExpression(args).toReturn(); |
465 } | 466 } |
466 | 467 |
467 Instantiator visitDartYield(DartYield node) { | 468 Instantiator visitDartYield(DartYield node) { |
468 Instantiator makeExpression = visit(node.expression); | 469 Instantiator makeExpression = visit(node.expression); |
469 return (arguments) => | 470 return (arguments) => |
470 new DartYield(makeExpression(arguments), node.hasStar); | 471 new DartYield(makeExpression(arguments), node.hasStar); |
471 } | 472 } |
472 | 473 |
473 Instantiator visitThrow(Throw node) { | 474 Instantiator visitThrow(Throw node) { |
474 Instantiator makeExpression = visit(node.expression); | 475 Instantiator makeExpression = visit(node.expression); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 } | 546 } |
546 return new VariableDeclarationList(node.keyword, declarations); | 547 return new VariableDeclarationList(node.keyword, declarations); |
547 }; | 548 }; |
548 } | 549 } |
549 | 550 |
550 Instantiator visitAssignment(Assignment node) { | 551 Instantiator visitAssignment(Assignment node) { |
551 Instantiator makeLeftHandSide = visit(node.leftHandSide); | 552 Instantiator makeLeftHandSide = visit(node.leftHandSide); |
552 String op = node.op; | 553 String op = node.op; |
553 Instantiator makeValue = visitNullable(node.value); | 554 Instantiator makeValue = visitNullable(node.value); |
554 return (arguments) { | 555 return (arguments) { |
555 return new Assignment.compound( | 556 return makeValue(arguments) |
556 makeLeftHandSide(arguments), op, makeValue(arguments)); | 557 .toAssignExpression(makeLeftHandSide(arguments), op); |
557 }; | 558 }; |
558 } | 559 } |
559 | 560 |
560 Instantiator visitVariableInitialization(VariableInitialization node) { | 561 Instantiator visitVariableInitialization(VariableInitialization node) { |
561 Instantiator makeDeclaration = visit(node.declaration); | 562 Instantiator makeDeclaration = visit(node.declaration); |
562 Instantiator makeValue = visitNullable(node.value); | 563 Instantiator makeValue = visitNullable(node.value); |
563 return (arguments) { | 564 return (arguments) { |
564 return new VariableInitialization( | 565 return new VariableInitialization( |
565 makeDeclaration(arguments), makeValue(arguments)); | 566 makeDeclaration(arguments), makeValue(arguments)); |
566 }; | 567 }; |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
909 if (count != before) containsInterpolatedNode.add(node); | 910 if (count != before) containsInterpolatedNode.add(node); |
910 return null; | 911 return null; |
911 } | 912 } |
912 | 913 |
913 visitInterpolatedNode(InterpolatedNode node) { | 914 visitInterpolatedNode(InterpolatedNode node) { |
914 containsInterpolatedNode.add(node); | 915 containsInterpolatedNode.add(node); |
915 if (node.isNamed) holeNames.add(node.nameOrPosition); | 916 if (node.isNamed) holeNames.add(node.nameOrPosition); |
916 ++count; | 917 ++count; |
917 } | 918 } |
918 } | 919 } |
OLD | NEW |