Chromium Code Reviews| 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 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1149 | 1149 |
| 1150 void forEach(void fun(T x)) { | 1150 void forEach(void fun(T x)) { |
| 1151 list.forEach(fun); | 1151 list.forEach(fun); |
| 1152 } | 1152 } |
| 1153 } | 1153 } |
| 1154 | 1154 |
| 1155 // Collects all the var declarations in the function. We need to do this in a | 1155 // Collects all the var declarations in the function. We need to do this in a |
| 1156 // separate pass because JS vars are lifted to the top of the function. | 1156 // separate pass because JS vars are lifted to the top of the function. |
| 1157 class VarCollector extends BaseVisitor { | 1157 class VarCollector extends BaseVisitor { |
| 1158 bool nested; | 1158 bool nested; |
| 1159 bool disableRenaming = false; | |
|
floitsch
2015/05/19 13:43:35
change to "enableRenaming".
herhut
2015/05/19 14:08:09
Done.
| |
| 1159 final OrderedSet<String> vars; | 1160 final OrderedSet<String> vars; |
| 1160 final OrderedSet<String> params; | 1161 final OrderedSet<String> params; |
| 1161 | 1162 |
| 1163 static final String disableVariableMinificationPattern = "::norenaming::"; | |
| 1164 static final String enableVariableMinificationPattern = "::dorenaming::"; | |
| 1165 | |
| 1162 VarCollector() : nested = false, | 1166 VarCollector() : nested = false, |
| 1163 vars = new OrderedSet<String>(), | 1167 vars = new OrderedSet<String>(), |
| 1164 params = new OrderedSet<String>(); | 1168 params = new OrderedSet<String>(); |
| 1165 | 1169 |
| 1166 void forEachVar(void fn(String v)) => vars.forEach(fn); | 1170 void forEachVar(void fn(String v)) => vars.forEach(fn); |
| 1167 void forEachParam(void fn(String p)) => params.forEach(fn); | 1171 void forEachParam(void fn(String p)) => params.forEach(fn); |
| 1168 | 1172 |
| 1169 void collectVarsInFunction(Fun fun) { | 1173 void collectVarsInFunction(Fun fun) { |
| 1170 if (!nested) { | 1174 if (!nested) { |
| 1171 nested = true; | 1175 nested = true; |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 1188 // Note that we don't bother collecting the name of the function. | 1192 // Note that we don't bother collecting the name of the function. |
| 1189 collectVarsInFunction(namedFunction.function); | 1193 collectVarsInFunction(namedFunction.function); |
| 1190 } | 1194 } |
| 1191 | 1195 |
| 1192 void visitFun(Fun fun) { | 1196 void visitFun(Fun fun) { |
| 1193 collectVarsInFunction(fun); | 1197 collectVarsInFunction(fun); |
| 1194 } | 1198 } |
| 1195 | 1199 |
| 1196 void visitThis(This node) {} | 1200 void visitThis(This node) {} |
| 1197 | 1201 |
| 1202 void visitComment(Comment node) { | |
| 1203 if (node.comment.contains(disableVariableMinificationPattern)) { | |
| 1204 disableRenaming = true; | |
| 1205 } else if (node.comment.contains(enableVariableMinificationPattern)) { | |
| 1206 disableRenaming = false; | |
| 1207 } | |
| 1208 } | |
| 1209 | |
| 1198 void visitVariableDeclaration(VariableDeclaration decl) { | 1210 void visitVariableDeclaration(VariableDeclaration decl) { |
| 1199 if (decl.allowRename) vars.add(decl.name); | 1211 if (!disableRenaming && decl.allowRename) vars.add(decl.name); |
| 1200 } | 1212 } |
| 1201 } | 1213 } |
| 1202 | 1214 |
| 1203 | 1215 |
| 1204 /** | 1216 /** |
| 1205 * Returns true, if the given node must be wrapped into braces when used | 1217 * Returns true, if the given node must be wrapped into braces when used |
| 1206 * as then-statement in an [If] that has an else branch. | 1218 * as then-statement in an [If] that has an else branch. |
| 1207 */ | 1219 */ |
| 1208 class DanglingElseVisitor extends BaseVisitor<bool> { | 1220 class DanglingElseVisitor extends BaseVisitor<bool> { |
| 1209 JavaScriptPrintingContext context; | 1221 JavaScriptPrintingContext context; |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1413 } | 1425 } |
| 1414 } | 1426 } |
| 1415 | 1427 |
| 1416 EnterExitNode exitNode(JavaScriptPrintingContext context, int position) { | 1428 EnterExitNode exitNode(JavaScriptPrintingContext context, int position) { |
| 1417 // Enter must happen before exit. | 1429 // Enter must happen before exit. |
| 1418 addToNode(context, position); | 1430 addToNode(context, position); |
| 1419 context.exitNode(node, startPosition, position, closingPosition); | 1431 context.exitNode(node, startPosition, position, closingPosition); |
| 1420 return parent; | 1432 return parent; |
| 1421 } | 1433 } |
| 1422 } | 1434 } |
| OLD | NEW |