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

Side by Side Diff: pkg/compiler/lib/src/js/template.dart

Issue 922463002: Revert "Redo "Steps towards making dart2js JS AST templates an indepentent library."" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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) 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;
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
11 TemplateManager(); 11 TemplateManager();
12 12
13 13
14 Template lookupExpressionTemplate(String source) { 14 Template lookupExpressionTemplate(String source) {
15 return expressionTemplates[source]; 15 return expressionTemplates[source];
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 new FunctionDeclaration(makeName(arguments), makeFunction(arguments)); 492 new FunctionDeclaration(makeName(arguments), makeFunction(arguments));
493 } 493 }
494 494
495 Instantiator visitLabeledStatement(LabeledStatement node) { 495 Instantiator visitLabeledStatement(LabeledStatement node) {
496 Instantiator makeBody = visit(node.body); 496 Instantiator makeBody = visit(node.body);
497 return (arguments) => new LabeledStatement(node.label, makeBody(arguments)); 497 return (arguments) => new LabeledStatement(node.label, makeBody(arguments));
498 } 498 }
499 499
500 Instantiator visitLiteralStatement(LiteralStatement node) => 500 Instantiator visitLiteralStatement(LiteralStatement node) =>
501 TODO('visitLiteralStatement'); 501 TODO('visitLiteralStatement');
502 Instantiator visitBlob(Blob node) =>
503 TODO('visitBlob');
502 Instantiator visitLiteralExpression(LiteralExpression node) => 504 Instantiator visitLiteralExpression(LiteralExpression node) =>
503 TODO('visitLiteralExpression'); 505 TODO('visitLiteralExpression');
504 506
505 Instantiator visitVariableDeclarationList(VariableDeclarationList node) { 507 Instantiator visitVariableDeclarationList(VariableDeclarationList node) {
506 List<Instantiator> declarationMakers = 508 List<Instantiator> declarationMakers =
507 node.declarations.map(visit).toList(); 509 node.declarations.map(visit).toList();
508 return (arguments) { 510 return (arguments) {
509 List<VariableInitialization> declarations = <VariableInitialization>[]; 511 List<VariableInitialization> declarations = <VariableInitialization>[];
510 for (Instantiator instantiator in declarationMakers) { 512 for (Instantiator instantiator in declarationMakers) {
511 var result = instantiator(arguments); 513 var result = instantiator(arguments);
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 702
701 Instantiator visitAwait(Await node) { 703 Instantiator visitAwait(Await node) {
702 Instantiator makeExpression = visit(node.expression); 704 Instantiator makeExpression = visit(node.expression);
703 return (arguments) { 705 return (arguments) {
704 return new Await(makeExpression(arguments)); 706 return new Await(makeExpression(arguments));
705 }; 707 };
706 } 708 }
707 } 709 }
708 710
709 /** 711 /**
710 * InterpolatedNodeAnalysis determines which AST trees contain 712 * InterpolatedNodeAnalysis extract [InterpolatedNode]s from AST.
711 * [InterpolatedNode]s, and the names of the named interpolated nodes.
712 */ 713 */
713 class InterpolatedNodeAnalysis extends BaseVisitor { 714 class InterpolatedNodeAnalysis extends BaseVisitor {
714 final Set<Node> containsInterpolatedNode = new Set<Node>(); 715 final Setlet<Node> containsInterpolatedNode = new Setlet<Node>();
715 final Set<String> holeNames = new Set<String>(); 716 final List<InterpolatedNode> interpolatedNodes = <InterpolatedNode>[];
717 final Setlet<String> holeNames = new Setlet<String>();
716 int count = 0; 718 int count = 0;
717 719
718 InterpolatedNodeAnalysis(); 720 InterpolatedNodeAnalysis();
719 721
720 bool containsInterpolatedNodes(Node node) => 722 bool containsInterpolatedNodes(Node node) =>
721 containsInterpolatedNode.contains(node); 723 containsInterpolatedNode.contains(node);
722 724
723 void visit(Node node) { 725 void visit(Node node) {
724 node.accept(this); 726 node.accept(this);
725 } 727 }
726 728
727 void visitNode(Node node) { 729 void visitNode(Node node) {
728 int before = count; 730 int before = count;
729 node.visitChildren(this); 731 node.visitChildren(this);
730 if (count != before) containsInterpolatedNode.add(node); 732 if (count != before) containsInterpolatedNode.add(node);
731 return null; 733 return null;
732 } 734 }
733 735
734 visitInterpolatedNode(InterpolatedNode node) { 736 visitInterpolatedNode(InterpolatedNode node) {
737 interpolatedNodes.add(node);
735 containsInterpolatedNode.add(node); 738 containsInterpolatedNode.add(node);
736 if (node.isNamed) holeNames.add(node.nameOrPosition); 739 if (node.isNamed) holeNames.add(node.nameOrPosition);
737 ++count; 740 ++count;
738 } 741 }
739 } 742 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js/rewrite_async.dart ('k') | pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698