fix corner case in arguments (#4398)

fixes #4397
This commit is contained in:
Alex Lam S.L
2020-12-18 01:42:07 +00:00
committed by GitHub
parent c1256c399a
commit 82d2aa4acf
3 changed files with 34 additions and 9 deletions

View File

@@ -100,6 +100,8 @@ SymbolDef.prototype = {
},
};
var unary_side_effects = makePredicate("delete ++ --");
AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) {
options = defaults(options, {
cache: null,
@@ -256,8 +258,13 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) {
} else if (name == "arguments"
&& sym.orig[0] instanceof AST_SymbolFunarg
&& !(sym.scope instanceof AST_Arrow)) {
if (!(tw.parent() instanceof AST_PropAccess)) {
sym.scope.uses_arguments = "d";
var parent = tw.parent();
if (parent instanceof AST_Assign && parent.left === node
|| parent instanceof AST_Unary && unary_side_effects[parent.operator]) {
sym.scope.uses_arguments = 3;
} else if (sym.scope.uses_arguments < 2
&& !(parent instanceof AST_PropAccess && parent.expression === node)) {
sym.scope.uses_arguments = 2;
} else if (!sym.scope.uses_arguments) {
sym.scope.uses_arguments = true;
}