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 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 params.addAll(result); | 647 params.addAll(result); |
648 } else { | 648 } else { |
649 params.add(result); | 649 params.add(result); |
650 } | 650 } |
651 } | 651 } |
652 Statement body = makeBody(arguments); | 652 Statement body = makeBody(arguments); |
653 return new Fun(params, body); | 653 return new Fun(params, body); |
654 }; | 654 }; |
655 } | 655 } |
656 | 656 |
| 657 Instantiator visitDeferredExpression(DeferredExpression node) => same(node); |
| 658 |
| 659 Instantiator visitDeferredNumber(DeferredNumber node) => same(node); |
| 660 |
| 661 Instantiator visitDeferredString(DeferredString node) => |
| 662 (arguments) => node; |
| 663 |
657 Instantiator visitLiteralBool(LiteralBool node) => | 664 Instantiator visitLiteralBool(LiteralBool node) => |
658 (arguments) => new LiteralBool(node.value); | 665 (arguments) => new LiteralBool(node.value); |
659 | 666 |
660 Instantiator visitLiteralString(LiteralString node) => | 667 Instantiator visitLiteralString(LiteralString node) => |
661 (arguments) => new LiteralString(node.value); | 668 (arguments) => new LiteralString(node.value); |
662 | 669 |
663 Instantiator visitLiteralNumber(LiteralNumber node) => | 670 Instantiator visitLiteralNumber(LiteralNumber node) => |
664 (arguments) => new LiteralNumber(node.value); | 671 (arguments) => new LiteralNumber(node.value); |
665 | 672 |
666 Instantiator visitLiteralNull(LiteralNull node) => | 673 Instantiator visitLiteralNull(LiteralNull node) => |
667 (arguments) => new LiteralNull(); | 674 (arguments) => new LiteralNull(); |
668 | 675 |
| 676 Instantiator visitStringConcatenation(StringConcatenation node) { |
| 677 List<Instantiator> partMakers = node.parts |
| 678 .map(visit) |
| 679 .toList(growable: false); |
| 680 return (arguments) { |
| 681 List<Literal> parts = partMakers |
| 682 .map((Instantiator instantiator) => instantiator(arguments)) |
| 683 .toList(growable: false); |
| 684 return new StringConcatenation(parts); |
| 685 }; |
| 686 } |
| 687 |
669 Instantiator visitArrayInitializer(ArrayInitializer node) { | 688 Instantiator visitArrayInitializer(ArrayInitializer node) { |
670 // TODO(sra): Implement splicing? | 689 // TODO(sra): Implement splicing? |
671 List<Instantiator> elementMakers = node.elements | 690 List<Instantiator> elementMakers = node.elements |
672 .map(visit) | 691 .map(visit) |
673 .toList(growable: false); | 692 .toList(growable: false); |
674 return (arguments) { | 693 return (arguments) { |
675 List<Expression> elements = elementMakers | 694 List<Expression> elements = elementMakers |
676 .map((Instantiator instantiator) => instantiator(arguments)) | 695 .map((Instantiator instantiator) => instantiator(arguments)) |
677 .toList(growable: false); | 696 .toList(growable: false); |
678 return new ArrayInitializer(elements); | 697 return new ArrayInitializer(elements); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 if (count != before) containsInterpolatedNode.add(node); | 765 if (count != before) containsInterpolatedNode.add(node); |
747 return null; | 766 return null; |
748 } | 767 } |
749 | 768 |
750 visitInterpolatedNode(InterpolatedNode node) { | 769 visitInterpolatedNode(InterpolatedNode node) { |
751 containsInterpolatedNode.add(node); | 770 containsInterpolatedNode.add(node); |
752 if (node.isNamed) holeNames.add(node.nameOrPosition); | 771 if (node.isNamed) holeNames.add(node.nameOrPosition); |
753 ++count; | 772 ++count; |
754 } | 773 } |
755 } | 774 } |
OLD | NEW |