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
});
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)) {
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;
}
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;
+ }
}