diff --git a/docs/rules/no-param-reassign.md b/docs/rules/no-param-reassign.md index 2ee312c2b81..47a7af3cbe9 100644 --- a/docs/rules/no-param-reassign.md +++ b/docs/rules/no-param-reassign.md @@ -129,17 +129,25 @@ Examples of **correct** code for the `{ "props": true }` option with `"ignorePro ```js /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/ -function foo(bar) { +function foo(barVar) { barVar.prop = "value"; } -function foo(bar) { +function foo(barrito) { delete barrito.aaa; } -function foo(bar) { +function foo(bar_) { bar_.aaa++; } + +function foo(barBaz) { + for (barBaz.aaa in baz) {} +} + +function foo(barBaz) { + for (barBaz.aaa of baz) {} +} ``` diff --git a/tests/lib/rules/no-param-reassign.js b/tests/lib/rules/no-param-reassign.js index 5bb70e6aa4c..6985cabb856 100644 --- a/tests/lib/rules/no-param-reassign.js +++ b/tests/lib/rules/no-param-reassign.js @@ -91,6 +91,14 @@ ruleTester.run("no-param-reassign", rule, { code: "function foo(a) { for (bar of baz) a.b; }", options: [{ props: true }], parserOptions: { ecmaVersion: 6 } + }, + { + code: "function foo(bar, baz) { bar.a = true; baz.b = false; }", + options: [{ + props: true, + ignorePropertyModificationsForRegex: ["^(foo|bar)$"], + ignorePropertyModificationsFor: ["baz"] + }] } ],