add missing LHS cases which global_defs should avoid
This commit is contained in:
committed by
Richard van Velzen
parent
ec2e5fa3a2
commit
48284844a4
@@ -970,6 +970,11 @@ merge(Compressor.prototype, {
|
|||||||
node.DEFMETHOD("is_string", func);
|
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) {
|
function best_of(ast1, ast2) {
|
||||||
return ast1.print_to_string().length >
|
return ast1.print_to_string().length >
|
||||||
ast2.print_to_string().length
|
ast2.print_to_string().length
|
||||||
@@ -2608,14 +2613,6 @@ merge(Compressor.prototype, {
|
|||||||
});
|
});
|
||||||
|
|
||||||
OPT(AST_SymbolRef, function(self, compressor){
|
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())) {
|
if (self.undeclared() && !isLHS(self, compressor.parent())) {
|
||||||
var defines = compressor.option("global_defs");
|
var defines = compressor.option("global_defs");
|
||||||
if (defines && HOP(defines, self.name)) {
|
if (defines && HOP(defines, self.name)) {
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
|
|||||||
sym = g;
|
sym = g;
|
||||||
}
|
}
|
||||||
node.thedef = sym;
|
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) {
|
|| parent instanceof AST_Assign && parent.left === node) {
|
||||||
sym.modified = true;
|
sym.modified = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,29 @@
|
|||||||
do_not_update_lhs: {
|
do_not_update_lhs: {
|
||||||
options = { global_defs: { DEBUG: false } };
|
options = {
|
||||||
input: { DEBUG = false; }
|
global_defs: { DEBUG: 0 }
|
||||||
expect: { DEBUG = false; }
|
}
|
||||||
|
input: {
|
||||||
|
DEBUG++;
|
||||||
|
DEBUG += 1;
|
||||||
|
DEBUG = 1;
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
DEBUG++;
|
||||||
|
DEBUG += 1;
|
||||||
|
DEBUG = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do_update_rhs: {
|
do_update_rhs: {
|
||||||
options = { global_defs: { DEBUG: false } };
|
options = {
|
||||||
input: { MY_DEBUG = DEBUG; }
|
global_defs: { DEBUG: 0 }
|
||||||
expect: { MY_DEBUG = false; }
|
}
|
||||||
|
input: {
|
||||||
|
MY_DEBUG = DEBUG;
|
||||||
|
MY_DEBUG += DEBUG;
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
MY_DEBUG = 0;
|
||||||
|
MY_DEBUG += 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user