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

Unified Diff: lib/compiler/implementation/dart_backend/emitter.dart

Issue 10919033: Rework Unparser/unparse StringBuffer management. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/compiler/implementation/dart_backend/backend.dart ('k') | lib/compiler/implementation/tree/nodes.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/compiler/implementation/dart_backend/emitter.dart
diff --git a/lib/compiler/implementation/dart_backend/emitter.dart b/lib/compiler/implementation/dart_backend/emitter.dart
index 028f4cd8e972c7b320a5efcf3fba03a5fd98f614..b97f47a01cd577bb5bcf90972b22f0a12c721ade 100644
--- a/lib/compiler/implementation/dart_backend/emitter.dart
+++ b/lib/compiler/implementation/dart_backend/emitter.dart
@@ -8,7 +8,6 @@ String emitCode(
Map<LibraryElement, String> imports,
Collection<Element> topLevelElements,
Map<ClassElement, Collection<Element>> classMembers) {
- final sb = new StringBuffer();
final processedVariableLists = new Set<VariableListElement>();
void outputElement(Element element) {
@@ -22,50 +21,47 @@ String emitCode(
final variableList = variableElement.variables;
if (!processedVariableLists.contains(variableList)) {
processedVariableLists.add(variableList);
- sb.add(unparser.unparse(variableList.parseNode(compiler)));
+ unparser.visit(variableList.parseNode(compiler));
Roman 2012/09/03 06:39:24 Can you please make a function 'unparse' in Unpars
Anton Muhin 2012/09/03 09:28:10 Done.
}
} else {
- sb.add(unparser.unparse(element.parseNode(compiler)));
+ unparser.visit(element.parseNode(compiler));
}
}
void outputClass(ClassElement classElement, Collection<Element> members) {
ClassNode classNode = classElement.parseNode(compiler);
// classElement.beginToken is 'class', 'interface', or 'abstract'.
- sb.add(classNode.beginToken.slowToString());
- if (classNode.beginToken.slowToString() == 'abstract') {
- sb.add(' ');
- sb.add(classNode.beginToken.next.slowToString()); // 'class'
+ unparser.addToken(classNode.beginToken);
+ if (classNode.beginToken.stringValue == 'abstract') {
+ unparser.addToken(classNode.beginToken.next);
}
- sb.add(' ');
- sb.add(unparser.unparse(classNode.name));
+ unparser.visit(classNode.name);
if (classNode.typeParameters !== null) {
- sb.add(unparser.unparse(classNode.typeParameters));
+ unparser.visit(classNode.typeParameters);
}
if (classNode.extendsKeyword !== null) {
- sb.add(' ');
- classNode.extendsKeyword.value.printOn(sb);
- sb.add(' ');
- sb.add(unparser.unparse(classNode.superclass));
+ unparser.addString(' ');
+ unparser.addToken(classNode.extendsKeyword);
+ unparser.visit(classNode.superclass);
}
if (!classNode.interfaces.isEmpty()) {
- sb.add(' ');
- sb.add(unparser.unparse(classNode.interfaces));
+ unparser.addString(' ');
+ unparser.visit(classNode.interfaces);
}
if (classNode.defaultClause !== null) {
- sb.add(' default ');
- sb.add(unparser.unparse(classNode.defaultClause));
+ unparser.addString(' default ');
+ unparser.visit(classNode.defaultClause);
}
- sb.add('{');
+ unparser.addString('{');
members.forEach((element) {
// TODO(smok): Filter out default constructors here.
outputElement(element);
});
- sb.add('}');
+ unparser.addString('}');
}
imports.forEach((libraryElement, prefix) {
- sb.add('#import("${libraryElement.uri}",prefix:"$prefix");');
+ unparser.addString('#import("${libraryElement.uri}",prefix:"$prefix");');
});
for (final element in topLevelElements) {
@@ -75,6 +71,4 @@ String emitCode(
outputElement(element);
}
}
-
- return sb.toString();
}
« no previous file with comments | « lib/compiler/implementation/dart_backend/backend.dart ('k') | lib/compiler/implementation/tree/nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698