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

Side by Side Diff: pkg/dev_compiler/lib/src/js_ast/template.dart

Issue 2822633003: fix #29346, ensure all nodes are implemented by DDC's code generator (Closed)
Patch Set: fix Created 3 years, 8 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
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 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 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 Instantiator makeValue = visit(node.value); 732 Instantiator makeValue = visit(node.value);
733 return (arguments) { 733 return (arguments) {
734 return new Property(makeName(arguments), makeValue(arguments)); 734 return new Property(makeName(arguments), makeValue(arguments));
735 }; 735 };
736 } 736 }
737 737
738 Instantiator visitRegExpLiteral(RegExpLiteral node) => 738 Instantiator visitRegExpLiteral(RegExpLiteral node) =>
739 (arguments) => new RegExpLiteral(node.pattern); 739 (arguments) => new RegExpLiteral(node.pattern);
740 740
741 Instantiator visitTemplateString(TemplateString node) { 741 Instantiator visitTemplateString(TemplateString node) {
742 Iterable makeElements = 742 Iterable<Instantiator> makeElements = node.interpolations.map(visit);
743 node.elements.map((e) => e is String ? e : visit(e)); 743 return (arguments) => new TemplateString(node.strings,
744 return (arguments) { 744 makeElements.map((m) => m(arguments)).toList(growable: false));
745 return new TemplateString(makeElements
746 .map((m) => m is String ? m : m(arguments))
747 .toList(growable: false));
748 };
749 } 745 }
750 746
751 Instantiator visitTaggedTemplate(TaggedTemplate node) { 747 Instantiator visitTaggedTemplate(TaggedTemplate node) {
752 Instantiator makeTag = visit(node.tag); 748 Instantiator makeTag = visit(node.tag);
753 Instantiator makeTemplate = visit(node.template); 749 Instantiator makeTemplate = visit(node.template);
754 return (arguments) { 750 return (arguments) {
755 return new TaggedTemplate(makeTag(arguments), makeTemplate(arguments)); 751 return new TaggedTemplate(makeTag(arguments), makeTemplate(arguments));
756 }; 752 };
757 } 753 }
758 754
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 if (count != before) containsInterpolatedNode.add(node); 909 if (count != before) containsInterpolatedNode.add(node);
914 return null; 910 return null;
915 } 911 }
916 912
917 visitInterpolatedNode(InterpolatedNode node) { 913 visitInterpolatedNode(InterpolatedNode node) {
918 containsInterpolatedNode.add(node); 914 containsInterpolatedNode.add(node);
919 if (node.isNamed) holeNames.add(node.nameOrPosition); 915 if (node.isNamed) holeNames.add(node.nameOrPosition);
920 ++count; 916 ++count;
921 } 917 }
922 } 918 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698