diff --git a/.changeset/cool-tips-explain.md b/.changeset/cool-tips-explain.md new file mode 100644 index 0000000..ea8d8fa --- /dev/null +++ b/.changeset/cool-tips-explain.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/mcp': patch +--- + +fix: check effect.pre in assign-in-effect diff --git a/packages/mcp-server/src/mcp/autofixers/add-autofixers-issues.test.ts b/packages/mcp-server/src/mcp/autofixers/add-autofixers-issues.test.ts index c606592..cd5d518 100644 --- a/packages/mcp-server/src/mcp/autofixers/add-autofixers-issues.test.ts +++ b/packages/mcp-server/src/mcp/autofixers/add-autofixers-issues.test.ts @@ -61,7 +61,7 @@ describe('add_autofixers_issues', () => { - + `); @@ -74,7 +74,7 @@ describe('add_autofixers_issues', () => { const content = run_autofixers_on_code(` + `); + + expect(content.suggestions).toContain( + 'The stateful variable "count" is assigned inside an $effect which is generally consider a malpractice. Consider using $derived if possible.', + ); + }); }); }); diff --git a/packages/mcp-server/src/mcp/autofixers/visitors/assign-in-effect.ts b/packages/mcp-server/src/mcp/autofixers/visitors/assign-in-effect.ts index e2e4894..c018ec5 100644 --- a/packages/mcp-server/src/mcp/autofixers/visitors/assign-in-effect.ts +++ b/packages/mcp-server/src/mcp/autofixers/visitors/assign-in-effect.ts @@ -11,19 +11,11 @@ function run_if_in_effect( ) { const in_effect = path.findLast( (node) => - node.type === 'CallExpression' && - node.callee.type === 'Identifier' && - node.callee.name === '$effect', + node.type === 'CallExpression' && state.parsed.is_rune(node, ['$effect', '$effect.pre']), ); - if ( - in_effect && - in_effect.type === 'CallExpression' && - (in_effect.callee.type === 'Identifier' || in_effect.callee.type === 'MemberExpression') - ) { - if (state.parsed.is_rune(in_effect, ['$effect', '$effect.pre'])) { - to_run(); - } + if (in_effect) { + to_run(); } }