Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/js/printer.dart |
| diff --git a/sdk/lib/_internal/compiler/implementation/js/printer.dart b/sdk/lib/_internal/compiler/implementation/js/printer.dart |
| index 048dc71a00d20065768637dcd62e8c6dc5638a64..14e286f278bcf28868e55fbbe38d55a18b3f3b03 100644 |
| --- a/sdk/lib/_internal/compiler/implementation/js/printer.dart |
| +++ b/sdk/lib/_internal/compiler/implementation/js/printer.dart |
| @@ -31,11 +31,15 @@ class Printer implements NodeVisitor { |
| ? new MinifyRenamer() : new IdentityNamer(); |
| } |
| + void newLine() { |
|
floitsch
2013/01/04 10:31:03
do we really need this?
If yes, please add comment
sra1
2013/01/04 23:47:52
Done.
|
| + out("\n"); |
| + } |
| + |
| void spaceOut() { |
| if (!shouldCompressOutput) out(" "); |
| } |
| void lineOut() { |
| - if (!shouldCompressOutput) out("\n"); |
| + if (!shouldCompressOutput) newLine(); |
| } |
| String lastAddedString = null; |
| @@ -70,7 +74,8 @@ class Printer implements NodeVisitor { |
| if (shouldCompressOutput) { |
| pendingSemicolon = true; |
| } else { |
| - out(";\n"); |
| + out(";"); |
| + newLine(); |
| } |
| } |
| @@ -672,8 +677,10 @@ class Printer implements NodeVisitor { |
| return false; |
| } |
| } |
| - // TODO(floitsch): normally we should also check that the field is not |
| - // a reserved word. |
| + // TODO(floitsch): normally we should also check that the field is not a |
| + // reserved word. We don't generate fields with reserved word names except |
| + // for 'super'. |
| + if (field == '"super"') return false; |
| return true; |
| } |
| @@ -758,15 +765,28 @@ class Printer implements NodeVisitor { |
| } |
| visitObjectInitializer(ObjectInitializer node) { |
| - out("{"); |
| + // Print all the properties on one line until we see a function-valued |
| + // property. Ideally, we would use a proper pretty-printer to make the |
| + // decision based on layout. |
| + bool onePerLine = false; |
| List<Property> properties = node.properties; |
| + out("{"); |
| + ++indentLevel; |
| for (int i = 0; i < properties.length; i++) { |
| + Expression value = properties[i].value; |
| + if (value is Fun || value is NamedFunction) onePerLine = true; |
| if (i != 0) { |
| out(","); |
| - spaceOut(); |
| + if (!onePerLine) spaceOut(); |
| + } |
| + if (onePerLine) { |
| + newLine(); |
|
floitsch
2013/01/04 10:31:03
why "newLine" and not "lineOut" ?
sra1
2013/01/04 23:47:52
To force newlines even under --minify.
We can play
floitsch
2013/01/04 23:58:20
Fine with me, but I wouldn't consider readability
|
| + indent(); |
| } |
| visitProperty(properties[i]); |
| } |
| + --indentLevel; |
| + if (onePerLine) lineOut(); |
| out("}"); |
| } |