}
function handle_custom_scan_order(node, tt) {
+ if (!(node instanceof AST_BlockScope)) return;
+ // Skip (non-executed) functions
+ if (node instanceof AST_Scope) return node;
+ // Stop upon collision with block-scoped variables
+ if (node.variables && !node.variables.all(function(def) {
+ return !lvalues.has(def.name);
+ })) {
+ abort = true;
+ return node;
+ }
// Scan object only in a for-in statement
if (node instanceof AST_ForIn) {
node.object = node.object.transform(tt);
abort = true;
return node;
}
- // Skip (non-executed) functions
- if (node instanceof AST_Scope) return node;
// Scan first case expression only in a switch statement
if (node instanceof AST_Switch) {
node.expression = node.expression.transform(tt);