Skip to content

Commit d1f13d0

Browse files
committed
fix: rename variable references within the current scope
1 parent d0f2b5a commit d1f13d0

File tree

5 files changed

+55
-1
lines changed

5 files changed

+55
-1
lines changed

Diff for: packages/eslint-plugin-svelte/src/rules/derived-has-same-inputs-outputs.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,19 @@ export default createRule('derived-has-same-inputs-outputs', {
5555
loc: fnParam.loc,
5656
messageId: 'unexpected',
5757
data: { name: expectedName },
58-
fix: (fixer) => fixer.replaceText(fnParam, expectedName)
58+
fix: (fixer) => {
59+
const scope = context.getSourceCode().getScope(fn.body);
60+
const variable = scope.variables.find((variable) => variable.name === fnParam.name);
61+
62+
if (!variable) {
63+
return fixer.replaceText(fnParam, expectedName);
64+
}
65+
66+
return [
67+
fixer.replaceText(fnParam, expectedName),
68+
...variable.references.map((ref) => fixer.replaceText(ref.identifier, expectedName))
69+
];
70+
}
5971
});
6072
}
6173
}

Diff for: packages/eslint-plugin-svelte/src/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -366,4 +366,6 @@ export interface SourceCode {
366366
getCommentsAfter(nodeOrToken: NodeOrToken | AST.Token): AST.Comment[];
367367

368368
getCommentsInside(node: NodeOrToken): AST.Comment[];
369+
370+
getScope(node: NodeOrToken): Scope;
369371
}

Diff for: packages/eslint-plugin-svelte/tests/fixtures/rules/derived-has-same-inputs-outputs/invalid/test01-errors.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,11 @@
3030
line: 18
3131
column: 22
3232
suggestions: null
33+
- message: The argument name should be '$a'.
34+
line: 21
35+
column: 13
36+
suggestions: null
37+
- message: The argument name should be '$a'.
38+
line: 28
39+
column: 13
40+
suggestions: null

Diff for: packages/eslint-plugin-svelte/tests/fixtures/rules/derived-has-same-inputs-outputs/invalid/test01-input.js

+16
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,19 @@ derived([null, l], ([$m, $n]) => {
1818
derived([o, null], ([$p, $q]) => {
1919
/** do nothing */
2020
});
21+
derived(a, (b) => {
22+
doSomethingWith(b);
23+
24+
somethingWithACallback(() => {
25+
b;
26+
});
27+
});
28+
derived(a, (b) => {
29+
b;
30+
31+
somethingWithACallback(() => {
32+
// purposely shadow the var, this should not be updated
33+
const b = 303;
34+
b;
35+
});
36+
});

Diff for: packages/eslint-plugin-svelte/tests/fixtures/rules/derived-has-same-inputs-outputs/invalid/test01-output.js

+16
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,19 @@ derived([null, l], ([$m, $l]) => {
1818
derived([o, null], ([$o, $q]) => {
1919
/** do nothing */
2020
});
21+
derived(a, ($a) => {
22+
doSomethingWith($a);
23+
24+
somethingWithACallback(() => {
25+
$a;
26+
});
27+
});
28+
derived(a, ($a) => {
29+
$a;
30+
31+
somethingWithACallback(() => {
32+
// purposely shadow the var, this should not be updated
33+
const b = 303;
34+
b;
35+
});
36+
});

0 commit comments

Comments
 (0)