| Index: lib/compiler/implementation/tree/unparser.dart
|
| diff --git a/lib/compiler/implementation/tree/unparser.dart b/lib/compiler/implementation/tree/unparser.dart
|
| index 8b3f03ad9df71e9609fec31fcbafdd89b8f78962..b48e08599b820aa9f57f2e1579c4a9d22afbe30b 100644
|
| --- a/lib/compiler/implementation/tree/unparser.dart
|
| +++ b/lib/compiler/implementation/tree/unparser.dart
|
| @@ -3,9 +3,10 @@
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| class Unparser implements Visitor {
|
| + final Renamer renamer;
|
| StringBuffer sb;
|
|
|
| - Unparser();
|
| + Unparser([this.renamer = const Renamer()]);
|
|
|
| String unparse(Node node) {
|
| sb = new StringBuffer();
|
| @@ -117,7 +118,12 @@ class Unparser implements Visitor {
|
| }
|
|
|
| visitIdentifier(Identifier node) {
|
| - add(node.token.value);
|
| + String newName = renamer.renameIdentifier(node);
|
| + if (newName == null) {
|
| + add(node.token.value);
|
| + } else {
|
| + sb.add(newName);
|
| + }
|
| }
|
|
|
| visitIf(If node) {
|
| @@ -183,8 +189,13 @@ class Unparser implements Visitor {
|
| * Unparses given NodeList starting from specific node.
|
| */
|
| unparseNodeListFrom(NodeList node, Link<Node> from) {
|
| + if (from.isEmpty()) return;
|
| String delimiter = (node.delimiter === null) ? " " : "${node.delimiter} ";
|
| - from.printOn(sb, delimiter);
|
| + visit(from.head);
|
| + for (Link link = from.tail; !link.isEmpty(); link = link.tail) {
|
| + sb.add(delimiter);
|
| + visit(link.head);
|
| + }
|
| }
|
|
|
| visitNodeList(NodeList node) {
|
| @@ -231,11 +242,22 @@ class Unparser implements Visitor {
|
| }
|
| }
|
|
|
| - visitSend(Send node) {
|
| + unparseSend(Send node) {
|
| unparseSendPart(node);
|
| visit(node.argumentsNode);
|
| }
|
|
|
| + visitSend(Send node) {
|
| + String newMethodName = renamer.renameSendMethod(node);
|
| + if (newMethodName !== null) {
|
| + sb.add(newMethodName);
|
| + visit(node.argumentsNode);
|
| + } else {
|
| + unparseSendPart(node);
|
| + visit(node.argumentsNode);
|
| + }
|
| + }
|
| +
|
| /**
|
| * Special case for assignments like "list[0] = 1".
|
| */
|
| @@ -278,7 +300,14 @@ class Unparser implements Visitor {
|
| }
|
|
|
| visitTypeAnnotation(TypeAnnotation node) {
|
| - node.visitChildren(this);
|
| + String newName = renamer.renameTypeName(node);
|
| + if (newName !== null) {
|
| + sb.add(newName);
|
| + visit(node.typeArguments);
|
| + } else {
|
| + // Fallback to default unparse without renaming.
|
| + node.visitChildren(this);
|
| + }
|
| }
|
|
|
| visitTypeVariable(TypeVariable node) {
|
|
|