| Index: lib/compiler/implementation/tree/unparser.dart
|
| diff --git a/lib/compiler/implementation/tree/unparser.dart b/lib/compiler/implementation/tree/unparser.dart
|
| index 2140a2a2d807e859d6e0e3d87c710534e1402fe2..8fea4240a58db9f3feeb7a466241be87bf610e4b 100644
|
| --- a/lib/compiler/implementation/tree/unparser.dart
|
| +++ b/lib/compiler/implementation/tree/unparser.dart
|
| @@ -27,7 +27,14 @@ class Unparser implements Visitor {
|
| }
|
|
|
| visit(Node node) {
|
| - if (node !== null) node.accept(this);
|
| + if (node === null) return;
|
| + String renamed = renamer.rename(node);
|
| + if (renamed !== null) {
|
| + sb.add(renamed);
|
| + } else {
|
| + // Fallback.
|
| + node.accept(this);
|
| + }
|
| }
|
|
|
| visitBlock(Block node) {
|
| @@ -106,20 +113,12 @@ class Unparser implements Visitor {
|
| // names are modelled with Send and it emits operator[] as only
|
| // operator, without [] which are expected to be emitted with
|
| // arguments.
|
| - emitName(Identifier name) {
|
| - final newName = renamer.renameIdentifier(name);
|
| - if (newName === null) {
|
| - visit(name);
|
| - } else {
|
| - sb.add(newName);
|
| - }
|
| - }
|
| if (node.name is Send) {
|
| Send send = node.name;
|
| assert(send is !SendSet);
|
| if (!send.isOperator) {
|
| // Looks like a factory method.
|
| - emitName(send.receiver);
|
| + visit(send.receiver);
|
| sb.add('.');
|
| } else {
|
| visit(send.receiver);
|
| @@ -127,7 +126,7 @@ class Unparser implements Visitor {
|
| }
|
| visit(send.selector);
|
| } else {
|
| - if (node.name !== null) emitName(node.name);
|
| + if (node.name !== null) visit(node.name);
|
| }
|
| visit(node.parameters);
|
| visit(node.initializers);
|
| @@ -237,7 +236,10 @@ class Unparser implements Visitor {
|
| if (node.isPrefix) {
|
| visit(node.selector);
|
| }
|
| - if (node.receiver !== null) {
|
| + // TODO(smok): Remove ugly hack for library preferences.
|
| + // Check that renamer does not want to omit receiver at all,
|
| + // in that case we don't need spaces or dot.
|
| + if (node.receiver !== null && renamer.rename(node.receiver) != '') {
|
| visit(node.receiver);
|
| CascadeReceiver asCascadeReceiver = node.receiver.asCascadeReceiver();
|
| if (asCascadeReceiver !== null) {
|
| @@ -262,14 +264,8 @@ class Unparser implements Visitor {
|
| }
|
|
|
| visitSend(Send node) {
|
| - String newMethodName = renamer.renameSendMethod(node);
|
| - if (newMethodName !== null) {
|
| - sb.add(newMethodName);
|
| - visit(node.argumentsNode);
|
| - } else {
|
| - unparseSendPart(node);
|
| - visit(node.argumentsNode);
|
| - }
|
| + unparseSendPart(node);
|
| + visit(node.argumentsNode);
|
| }
|
|
|
| /**
|
| @@ -318,14 +314,8 @@ class Unparser implements Visitor {
|
| }
|
|
|
| visitTypeAnnotation(TypeAnnotation node) {
|
| - String newName = renamer.renameTypeName(node);
|
| - if (newName !== null) {
|
| - sb.add(newName);
|
| - visit(node.typeArguments);
|
| - } else {
|
| - // Fallback to default unparse without renaming.
|
| - node.visitChildren(this);
|
| - }
|
| + visit(node.typeName);
|
| + visit(node.typeArguments);
|
| }
|
|
|
| visitTypeVariable(TypeVariable node) {
|
|
|