From ab36b9b10a3e9923d76fdfba4f86cca1c07437d7 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Fri, 22 Jun 2018 19:41:55 +0800 Subject: fix corner case in `ie8` (#3198) fixes #3197 --- lib/scope.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'lib/scope.js') diff --git a/lib/scope.js b/lib/scope.js index d4b13d12..8ce3e4da 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -132,10 +132,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { node.thedef = node; node.references = []; } - if (node instanceof AST_SymbolLambda) { - defun.def_function(node, node.name == "arguments" ? undefined : defun); - } - else if (node instanceof AST_SymbolDefun) { + if (node instanceof AST_SymbolDefun || options.ie8 && node instanceof AST_SymbolLambda) { // Careful here, the scope where this should be defined is // the parent scope. The reason is that we enter a new // scope when we encounter the AST_Defun node (which is @@ -143,6 +140,9 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { // later. (node.scope = defun.parent_scope).def_function(node, defun); } + else if (node instanceof AST_SymbolLambda) { + defun.def_function(node, node.name == "arguments" ? undefined : defun); + } else if (node instanceof AST_SymbolVar) { defun.def_variable(node, node.TYPE == "SymbolVar" ? null : undefined); if (defun !== scope) { @@ -349,9 +349,6 @@ function next_mangled_name(scope, options, def) { holes.push(scope.cname); } scope.names_in_use[name] = true; - if (options.ie8 && def.orig[0] instanceof AST_SymbolLambda) { - names_in_use(scope.parent_scope, options)[name] = true; - } return name; } -- cgit v1.2.3