Skip to content

Commit 326a048

Browse files
starkwangcjihrig
authored andcommitted
tools: add fixer for no-let-in-for-declaration
PR-URL: #16642 Refs: #16636 Reviewed-By: Anatoli Papirovski <[email protected]> Reviewed-By: Gireesh Punathil <[email protected]> Reviewed-By: Tobias Nießen <[email protected]>
1 parent a87f846 commit 326a048

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

test/parallel/test-eslint-no-let-in-for-declaration.js

+3
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,17 @@ ruleTester.run('no-let-in-for-declaration', rule, {
2424
invalid: [
2525
{
2626
code: 'for (let foo = 1;;);',
27+
output: 'for (var foo = 1;;);',
2728
errors: [{ message }]
2829
},
2930
{
3031
code: 'for (let foo in bar);',
32+
output: 'for (var foo in bar);',
3133
errors: [{ message }]
3234
},
3335
{
3436
code: 'for (let foo of bar);',
37+
output: 'for (var foo of bar);',
3538
errors: [{ message }]
3639
}
3740
]

tools/eslint-rules/no-let-in-for-declaration.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
module.exports = {
1616
create(context) {
17-
17+
const sourceCode = context.getSourceCode();
1818
const msg = 'Use of `let` as the loop variable in a for-loop is ' +
1919
'not recommended. Please use `var` instead.';
2020

@@ -23,7 +23,12 @@ module.exports = {
2323
*/
2424
function testForLoop(node) {
2525
if (node.init && node.init.kind === 'let') {
26-
context.report(node.init, msg);
26+
context.report({
27+
node: node.init,
28+
message: msg,
29+
fix: (fixer) =>
30+
fixer.replaceText(sourceCode.getFirstToken(node.init), 'var')
31+
});
2732
}
2833
}
2934

@@ -33,7 +38,12 @@ module.exports = {
3338
*/
3439
function testForInOfLoop(node) {
3540
if (node.left && node.left.kind === 'let') {
36-
context.report(node.left, msg);
41+
context.report({
42+
node: node.left,
43+
message: msg,
44+
fix: (fixer) =>
45+
fixer.replaceText(sourceCode.getFirstToken(node.left), 'var')
46+
});
3747
}
3848
}
3949

0 commit comments

Comments
 (0)