Skip to content

Commit 2e20294

Browse files
authored
prevent-abbreviations: Fix inappropriate suggestion (#592)
1 parent 7126d6d commit 2e20294

File tree

2 files changed

+40
-5
lines changed

2 files changed

+40
-5
lines changed

rules/prevent-abbreviations.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,9 @@ const create = context => {
668668
}
669669

670670
const scopes = variable.references.map(reference => reference.from).concat(variable.scope);
671+
variableReplacements.samples = variableReplacements.samples.map(
672+
name => avoidCapture(name, scopes, ecmaVersion, isSafeName)
673+
);
671674

672675
const problem = {
673676
node: definition.name,
@@ -676,20 +679,19 @@ const create = context => {
676679

677680
if (variableReplacements.total === 1 && shouldFix(variable)) {
678681
const [replacement] = variableReplacements.samples;
679-
const captureAvoidingReplacement = avoidCapture(replacement, scopes, ecmaVersion, isSafeName);
680682

681683
for (const scope of scopes) {
682684
if (!scopeToNamesGeneratedByFixer.has(scope)) {
683685
scopeToNamesGeneratedByFixer.set(scope, new Set());
684686
}
685687

686688
const generatedNames = scopeToNamesGeneratedByFixer.get(scope);
687-
generatedNames.add(captureAvoidingReplacement);
689+
generatedNames.add(replacement);
688690
}
689691

690692
problem.fix = fixer => {
691693
return variableIdentifiers(variable)
692-
.map(fixIdentifier(fixer, captureAvoidingReplacement));
694+
.map(fixIdentifier(fixer, replacement));
693695
};
694696
}
695697

test/prevent-abbreviations.js

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,7 @@ ruleTester.run('prevent-abbreviations', rule, {
775775
{
776776
code: 'class Err {}',
777777
output: 'class Error_ {}',
778-
errors: createErrors('The variable `Err` should be named `Error`. A more descriptive name will do too.')
778+
errors: createErrors('The variable `Err` should be named `Error_`. A more descriptive name will do too.')
779779
},
780780
{
781781
code: 'class Cb {}',
@@ -828,7 +828,40 @@ ruleTester.run('prevent-abbreviations', rule, {
828828
"use strict";
829829
let package_;
830830
`,
831-
errors: createErrors()
831+
errors: createErrors('The variable `pkg` should be named `package_`. A more descriptive name will do too.')
832+
},
833+
{
834+
code: outdent`
835+
"use strict";
836+
let pkg = 1;
837+
let package_ = 2;
838+
`,
839+
output: outdent`
840+
"use strict";
841+
let package__ = 1;
842+
let package_ = 2;
843+
`,
844+
errors: createErrors('The variable `pkg` should be named `package__`. A more descriptive name will do too.')
845+
},
846+
{
847+
code: outdent`
848+
"use strict";
849+
function foo() {
850+
const args = [...arguments];
851+
const pkg = 1;
852+
}
853+
`,
854+
output: outdent`
855+
"use strict";
856+
function foo() {
857+
const arguments_ = [...arguments];
858+
const package_ = 1;
859+
}
860+
`,
861+
errors: [
862+
...createErrors('The variable `args` should be named `arguments_`. A more descriptive name will do too.'),
863+
...createErrors('The variable `pkg` should be named `package_`. A more descriptive name will do too.')
864+
]
832865
},
833866

834867
{

0 commit comments

Comments
 (0)