if (value) {
lvalues.add(node.name, is_modified(compressor, tw, node, value, 0));
} else if (node instanceof AST_Lambda) {
- if (!(tw.find_parent(AST_Call) || tw.find_parent(AST_Scope))) return true;
+ for (var level = 0, parent, child = node; parent = tw.parent(level++); child = parent) {
+ if (parent instanceof AST_Assign) {
+ if (parent.left === child) break;
+ if (parent.operator == "=") continue;
+ if (lazy_op[parent.operator.slice(0, -1)]) continue;
+ break;
+ }
+ if (parent instanceof AST_Binary) {
+ if (lazy_op[parent.operator]) continue;
+ break;
+ }
+ if (parent instanceof AST_Call) return;
+ if (parent instanceof AST_Scope) return;
+ if (parent instanceof AST_Sequence) {
+ if (parent.tail_node() === child) continue;
+ break;
+ }
+ if (parent instanceof AST_Template) {
+ if (parent.tag) return;
+ break;
+ }
+ }
+ return true;
} else if (find_arguments && node instanceof AST_Sub) {
scope.each_argname(function(argname) {
if (!compressor.option("reduce_vars") || argname.definition().assignments) {