summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/lib/rules/no-param-reassign.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/eslint/lib/rules/no-param-reassign.js')
-rw-r--r--tools/node_modules/eslint/lib/rules/no-param-reassign.js13
1 files changed, 12 insertions, 1 deletions
diff --git a/tools/node_modules/eslint/lib/rules/no-param-reassign.js b/tools/node_modules/eslint/lib/rules/no-param-reassign.js
index 880ff93cb5..9b8c828d2c 100644
--- a/tools/node_modules/eslint/lib/rules/no-param-reassign.js
+++ b/tools/node_modules/eslint/lib/rules/no-param-reassign.js
@@ -67,7 +67,8 @@ module.exports = {
let node = reference.identifier;
let parent = node.parent;
- while (parent && !stopNodePattern.test(parent.type)) {
+ while (parent && (!stopNodePattern.test(parent.type) ||
+ parent.type === "ForInStatement" || parent.type === "ForOfStatement")) {
switch (parent.type) {
// e.g. foo.a = 0;
@@ -85,6 +86,16 @@ module.exports = {
}
break;
+ // e.g. for (foo.a in b) {}
+ case "ForInStatement":
+ case "ForOfStatement":
+ if (parent.left === node) {
+ return true;
+ }
+
+ // this is a stop node for parent.right and parent.body
+ return false;
+
// EXCLUDES: e.g. cache.get(foo.a).b = 0;
case "CallExpression":
if (parent.callee !== node) {