});
OPT(AST_SymbolRef, function(self, compressor){
- if (self.undeclared()) {
+ 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 && defines.hasOwnProperty(self.name)) {
return make_node_from_constant(compressor, defines[self.name], self);
--- /dev/null
+do_not_update_lhs: {
+ options = { global_defs: { DEBUG: false } };
+ input: { DEBUG = false; }
+ expect: { DEBUG = false; }
+}
+
+do_update_rhs: {
+ options = { global_defs: { DEBUG: false } };
+ input: { MY_DEBUG = DEBUG; }
+ expect: { MY_DEBUG = false; }
+}