return rhs.right;
}
+ function cross_scope(def, sym) {
+ do {
+ if (def === sym) return false;
+ if (sym instanceof AST_Scope) return true;
+ } while (sym = sym.parent_scope);
+ }
+
function scan_ref_scoped(node, descend, init) {
if (node instanceof AST_Assign && node.left instanceof AST_SymbolRef) {
var def = node.left.definition();
in_use_ids[node_def.id] = true;
in_use.push(node_def);
}
- if (node.scope !== node_def.scope) {
+ if (cross_scope(node_def.scope, node.scope)) {
var redef = node_def.redefined();
if (redef && !(redef.id in in_use_ids)) {
in_use_ids[redef.id] = true;
}
expect_stdout: true
}
+
+issue_4184: {
+ options = {
+ reduce_vars: true,
+ unused: true,
+ }
+ input: {
+ (function() {
+ var a = function() {}, b = [ a, 1 && b, a = {} ];
+ try {
+ throw 42;
+ } catch (a) {
+ {
+ console.log(a);
+ }
+ }
+ })();
+ }
+ expect: {
+ (function() {
+ var b = [ function() {}, 1 && b, {} ];
+ try {
+ throw 42;
+ } catch (a) {
+ console.log(a);
+ }
+ })();
+ }
+ expect_stdout: "42"
+}