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

Side by Side Diff: lib/compiler/implementation/tree/unparser.dart

Issue 10916053: Get rid of duplication of class node unparsing. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 // Returns null if no need to rename a node. 5 // Returns null if no need to rename a node.
6 typedef String Renamer(Node node); 6 typedef String Renamer(Node node);
7 7
8 String unparse(Node node) { 8 String unparse(Node node) {
9 Unparser unparser = new Unparser(); 9 Unparser unparser = new Unparser();
10 unparser.unparse(node); 10 unparser.unparse(node);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 } 59 }
60 60
61 visitCascade(Cascade node) { 61 visitCascade(Cascade node) {
62 visit(node.expression); 62 visit(node.expression);
63 } 63 }
64 64
65 visitCascadeReceiver(CascadeReceiver node) { 65 visitCascadeReceiver(CascadeReceiver node) {
66 visit(node.expression); 66 visit(node.expression);
67 } 67 }
68 68
69 visitClassNode(ClassNode node) { 69 unparseClassWithBody(ClassNode node, void classBodyEmitter()) {
70 addToken(node.beginToken); 70 addToken(node.beginToken);
71 if (node.beginToken.stringValue == 'abstract') {
72 addToken(node.beginToken.next);
73 }
71 visit(node.name); 74 visit(node.name);
72 if (node.typeParameters !== null) { 75 if (node.typeParameters !== null) {
73 visit(node.typeParameters); 76 visit(node.typeParameters);
74 } 77 }
75 sb.add(' ');
76 if (node.extendsKeyword !== null) { 78 if (node.extendsKeyword !== null) {
79 sb.add(' ');
77 addToken(node.extendsKeyword); 80 addToken(node.extendsKeyword);
78 visit(node.superclass); 81 visit(node.superclass);
82 }
83 if (!node.interfaces.isEmpty()) {
79 sb.add(' '); 84 sb.add(' ');
85 visit(node.interfaces);
80 } 86 }
81 visit(node.interfaces);
82 if (node.defaultClause !== null) { 87 if (node.defaultClause !== null) {
88 sb.add(' default ');
83 visit(node.defaultClause); 89 visit(node.defaultClause);
84 sb.add(' ');
85 } 90 }
86 sb.add('{\n'); 91 sb.add('{');
87 NodeList body = node.body; 92 classBodyEmitter();
88 if (body !== null) { 93 sb.add('}');
89 Link nodes = body.nodes; 94 }
90 if (!nodes.isEmpty()) { 95
91 sb.add(' '); 96 visitClassNode(ClassNode node) {
92 nodes.printOn(sb, '\n '); 97 unparseClassWithBody(node, () {
98 NodeList body = node.body;
99 if (body !== null) {
93 sb.add('\n'); 100 sb.add('\n');
101 Link nodes = body.nodes;
102 if (!nodes.isEmpty()) {
103 sb.add(' ');
104 nodes.printOn(sb, '\n ');
105 sb.add('\n');
106 }
94 } 107 }
95 } 108 });
96 sb.add('}\n'); 109 sb.add('\n');
97 } 110 }
98 111
99 visitConditional(Conditional node) { 112 visitConditional(Conditional node) {
100 visit(node.condition); 113 visit(node.condition);
101 add(node.questionToken.value); 114 add(node.questionToken.value);
102 visit(node.thenExpression); 115 visit(node.thenExpression);
103 add(node.colonToken.value); 116 add(node.colonToken.value);
104 visit(node.elseExpression); 117 visit(node.elseExpression);
105 } 118 }
106 119
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 sb.add(' '); 517 sb.add(' ');
505 } 518 }
506 visit(node.name); 519 visit(node.name);
507 if (node.typeParameters !== null) { 520 if (node.typeParameters !== null) {
508 visit(node.typeParameters); 521 visit(node.typeParameters);
509 } 522 }
510 visit(node.formals); 523 visit(node.formals);
511 add(node.endToken.value); 524 add(node.endToken.value);
512 } 525 }
513 } 526 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/dart_backend/emitter.dart ('k') | tests/compiler/dart2js/unparser2_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698