fix corner case with arguments (#4697)

fixes #4696
This commit is contained in:
Alex Lam S.L
2021-02-27 01:26:15 +00:00
committed by GitHub
parent ba4a771bbc
commit 0a42457df6
3 changed files with 24 additions and 1 deletions

View File

@@ -428,7 +428,7 @@ var AST_For = DEFNODE("For", "init condition step", {
}, AST_IterationStatement);
var AST_ForEnumeration = DEFNODE("ForEnumeration", "init object", {
$documentation: "Base class for enumeration loops, i.e. `for ... in`, `for ... of` & `for await ... of`",
$documentation: "Base class for enumeration loops, i.e. `for ... in`, `for ... of` & `for await ... of`",
$propdoc: {
init: "[AST_Node] the assignment target during iteration",
object: "[AST_Node] the object to iterate over"

View File

@@ -108,6 +108,7 @@ function is_lhs(node, parent) {
if (parent instanceof AST_DefaultValue) return parent.name === node && node;
if (parent instanceof AST_Destructured) return node;
if (parent instanceof AST_DestructuredKeyVal) return node;
if (parent instanceof AST_ForEnumeration) return parent.init === node && node;
if (parent instanceof AST_Unary) return unary_side_effects[parent.operator] && parent.expression;
}

View File

@@ -977,3 +977,25 @@ issue_4432: {
}
expect_stdout: "PASS"
}
issue_4696: {
options = {
arguments: true,
keep_fargs: false,
}
input: {
console.log(function() {
for (arguments in [ 42 ]);
for (var a in arguments[0])
return "PASS";
}());
}
expect: {
console.log(function() {
for (arguments in [ 42 ]);
for (var a in arguments[0])
return "PASS";
}());
}
expect_stdout: "PASS"
}