aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralexlamsl <alexlamsl@gmail.com>2017-01-17 17:33:40 +0800
committerRichard van Velzen <rvanvelzen1@gmail.com>2017-01-19 21:06:28 +0100
commit48284844a461e6113bb9911cdcdad7ab8a3d85de (patch)
tree05c5d8ff7f2a312a8880c143dbfcdf35abe11dd5
parentec2e5fa3a2e5cf421aebd94b93c668b18e540c69 (diff)
downloadtracifyjs-48284844a461e6113bb9911cdcdad7ab8a3d85de.tar.gz
tracifyjs-48284844a461e6113bb9911cdcdad7ab8a3d85de.zip
add missing LHS cases which global_defs should avoid
-rw-r--r--lib/compress.js13
-rw-r--r--lib/scope.js2
-rw-r--r--test/compress/issue-208.js30
3 files changed, 30 insertions, 15 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 5879b93b..bbd3659d 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -970,6 +970,11 @@ merge(Compressor.prototype, {
node.DEFMETHOD("is_string", func);
});
+ function isLHS(node, parent) {
+ return parent instanceof AST_Unary && (parent.operator === "++" || parent.operator === "--")
+ || parent instanceof AST_Assign && parent.left === node;
+ }
+
function best_of(ast1, ast2) {
return ast1.print_to_string().length >
ast2.print_to_string().length
@@ -2608,14 +2613,6 @@ merge(Compressor.prototype, {
});
OPT(AST_SymbolRef, function(self, compressor){
- function isLHS(symbol, parent) {
- return (
- parent instanceof AST_Binary &&
- parent.operator === '=' &&
- parent.left === symbol
- );
- }
-
if (self.undeclared() && !isLHS(self, compressor.parent())) {
var defines = compressor.option("global_defs");
if (defines && HOP(defines, self.name)) {
diff --git a/lib/scope.js b/lib/scope.js
index 4943b568..bc5db90d 100644
--- a/lib/scope.js
+++ b/lib/scope.js
@@ -220,7 +220,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
sym = g;
}
node.thedef = sym;
- if (parent instanceof AST_Unary && (parent.operator === '++' || parent.operator === '--')
+ if (parent instanceof AST_Unary && (parent.operator === "++" || parent.operator === "--")
|| parent instanceof AST_Assign && parent.left === node) {
sym.modified = true;
}
diff --git a/test/compress/issue-208.js b/test/compress/issue-208.js
index 14752b8a..2f103786 100644
--- a/test/compress/issue-208.js
+++ b/test/compress/issue-208.js
@@ -1,11 +1,29 @@
do_not_update_lhs: {
- options = { global_defs: { DEBUG: false } };
- input: { DEBUG = false; }
- expect: { DEBUG = false; }
+ options = {
+ global_defs: { DEBUG: 0 }
+ }
+ input: {
+ DEBUG++;
+ DEBUG += 1;
+ DEBUG = 1;
+ }
+ expect: {
+ DEBUG++;
+ DEBUG += 1;
+ DEBUG = 1;
+ }
}
do_update_rhs: {
- options = { global_defs: { DEBUG: false } };
- input: { MY_DEBUG = DEBUG; }
- expect: { MY_DEBUG = false; }
+ options = {
+ global_defs: { DEBUG: 0 }
+ }
+ input: {
+ MY_DEBUG = DEBUG;
+ MY_DEBUG += DEBUG;
+ }
+ expect: {
+ MY_DEBUG = 0;
+ MY_DEBUG += 0;
+ }
}