Chromium Code Reviews| 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(); |
| } |