| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of js_ast; | 5 part of js_ast; |
| 6 | 6 |
| 7 | 7 |
| 8 class JavaScriptPrintingOptions { | 8 class JavaScriptPrintingOptions { |
| 9 final bool shouldCompressOutput; | 9 final bool shouldCompressOutput; |
| 10 final bool minifyLocalVariables; | 10 final bool minifyLocalVariables; |
| (...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 887 } | 887 } |
| 888 out(node.value); | 888 out(node.value); |
| 889 } | 889 } |
| 890 | 890 |
| 891 visitLiteralNull(LiteralNull node) { | 891 visitLiteralNull(LiteralNull node) { |
| 892 out("null"); | 892 out("null"); |
| 893 } | 893 } |
| 894 | 894 |
| 895 visitArrayInitializer(ArrayInitializer node) { | 895 visitArrayInitializer(ArrayInitializer node) { |
| 896 out("["); | 896 out("["); |
| 897 indentMore(); |
| 898 var multiline = node.multiline; |
| 897 List<Expression> elements = node.elements; | 899 List<Expression> elements = node.elements; |
| 898 for (int i = 0; i < elements.length; i++) { | 900 for (int i = 0; i < elements.length; i++) { |
| 899 Expression element = elements[i]; | 901 Expression element = elements[i]; |
| 900 if (element is ArrayHole) { | 902 if (element is ArrayHole) { |
| 901 // Note that array holes must have a trailing "," even if they are | 903 // Note that array holes must have a trailing "," even if they are |
| 902 // in last position. Otherwise `[,]` (having length 1) would become | 904 // in last position. Otherwise `[,]` (having length 1) would become |
| 903 // equal to `[]` (the empty array) | 905 // equal to `[]` (the empty array) |
| 904 // and [1,,] (array with 1 and a hole) would become [1,] = [1]. | 906 // and [1,,] (array with 1 and a hole) would become [1,] = [1]. |
| 905 out(","); | 907 out(","); |
| 906 continue; | 908 continue; |
| 907 } | 909 } |
| 908 if (i != 0) spaceOut(); | 910 if (i != 0 && !multiline) spaceOut(); |
| 911 if (multiline) { |
| 912 forceLine(); |
| 913 indent(); |
| 914 } |
| 909 visitNestedExpression(element, ASSIGNMENT, | 915 visitNestedExpression(element, ASSIGNMENT, |
| 910 newInForInit: false, newAtStatementBegin: false); | 916 newInForInit: false, newAtStatementBegin: false); |
| 911 // We can skip the trailing "," for the last element (since it's not | 917 // We can skip the trailing "," for the last element (since it's not |
| 912 // an array hole). | 918 // an array hole). |
| 913 if (i != elements.length - 1) out(","); | 919 if (i != elements.length - 1) out(","); |
| 914 } | 920 } |
| 921 indentLess(); |
| 922 if (multiline) { |
| 923 lineOut(); |
| 924 indent(); |
| 925 } |
| 915 out("]"); | 926 out("]"); |
| 916 } | 927 } |
| 917 | 928 |
| 918 visitArrayHole(ArrayHole node) { | 929 visitArrayHole(ArrayHole node) { |
| 919 throw "Unreachable"; | 930 throw "Unreachable"; |
| 920 } | 931 } |
| 921 | 932 |
| 922 visitObjectInitializer(ObjectInitializer node) { | 933 visitObjectInitializer(ObjectInitializer node) { |
| 923 List<Property> properties = node.properties; | 934 List<Property> properties = node.properties; |
| 924 out("{"); | 935 out("{"); |
| 925 indentMore(); | 936 indentMore(); |
| 926 | 937 |
| 927 var isOneLiner = !node.vertical; | 938 var multiline = node.multiline; |
| 928 for (int i = 0; i < properties.length; i++) { | 939 for (int i = 0; i < properties.length; i++) { |
| 929 if (i != 0) { | 940 if (i != 0) { |
| 930 out(","); | 941 out(","); |
| 931 if (isOneLiner) spaceOut(); | 942 if (!multiline) spaceOut(); |
| 932 } | 943 } |
| 933 if (!isOneLiner) { | 944 if (multiline) { |
| 934 forceLine(); | 945 forceLine(); |
| 935 indent(); | 946 indent(); |
| 936 } | 947 } |
| 937 visit(properties[i]); | 948 visit(properties[i]); |
| 938 } | 949 } |
| 939 indentLess(); | 950 indentLess(); |
| 940 if (!isOneLiner) { | 951 if (multiline) { |
| 941 lineOut(); | 952 lineOut(); |
| 942 indent(); | 953 indent(); |
| 943 } | 954 } |
| 944 out("}"); | 955 out("}"); |
| 945 } | 956 } |
| 946 | 957 |
| 947 visitProperty(Property node) { | 958 visitProperty(Property node) { |
| 948 propertyNameOut(node.name); | 959 propertyNameOut(node.name); |
| 949 out(":"); | 960 out(":"); |
| 950 spaceOut(); | 961 spaceOut(); |
| (...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1431 declare(node.name); | 1442 declare(node.name); |
| 1432 node.function.accept(this); | 1443 node.function.accept(this); |
| 1433 } | 1444 } |
| 1434 | 1445 |
| 1435 visitClassExpression(ClassExpression node) { | 1446 visitClassExpression(ClassExpression node) { |
| 1436 declare(node.name); | 1447 declare(node.name); |
| 1437 if (node.heritage != null) node.heritage.accept(this); | 1448 if (node.heritage != null) node.heritage.accept(this); |
| 1438 for (Method element in node.methods) element.accept(this); | 1449 for (Method element in node.methods) element.accept(this); |
| 1439 } | 1450 } |
| 1440 } | 1451 } |
| OLD | NEW |