From df2a1c651c05c2393b8026925e7f327910b0f880 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Wed, 30 Apr 2025 16:36:38 +0900 Subject: [PATCH 1/2] fix(no-unused-svelte-ignore): ignore reactive-component warnings --- .../src/rules/no-unused-svelte-ignore.ts | 10 ++++++++++ .../valid/reactive-component-input.svelte | 15 +++++++++++++++ .../valid/reactive-component-requirements.json | 3 +++ 3 files changed, 28 insertions(+) create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-input.svelte create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-requirements.json diff --git a/packages/eslint-plugin-svelte/src/rules/no-unused-svelte-ignore.ts b/packages/eslint-plugin-svelte/src/rules/no-unused-svelte-ignore.ts index 01b137d93..51fc63e13 100644 --- a/packages/eslint-plugin-svelte/src/rules/no-unused-svelte-ignore.ts +++ b/packages/eslint-plugin-svelte/src/rules/no-unused-svelte-ignore.ts @@ -2,6 +2,8 @@ import { getSvelteCompileWarnings } from '../shared/svelte-compile-warns/index.j import { createRule } from '../utils/index.js'; import type { IgnoreItem } from '../shared/svelte-compile-warns/ignore-comment.js'; import { getSvelteIgnoreItems } from '../shared/svelte-compile-warns/ignore-comment.js'; +import { VERSION as SVELTE_VERSION } from 'svelte/compiler'; +import semver from 'semver'; export default createRule('no-unused-svelte-ignore', { meta: { @@ -46,6 +48,14 @@ export default createRule('no-unused-svelte-ignore', { } for (const unused of warnings.unusedIgnores) { + if (unused.code === 'reactive-component' && semver.satisfies(SVELTE_VERSION, '<5')) { + // Svelte v4 `reactive-component` warnings are not emitted + // when we use the `generate: false` compiler option. + // This is probably not the intended behavior of Svelte v4, but it's not going to be fixed, + // so as a workaround we'll ignore the `reactive-component` warnings. + // See https://github.com/sveltejs/eslint-plugin-svelte/issues/1192 + continue; + } context.report({ loc: { start: sourceCode.getLocFromIndex(unused.range[0]), diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-input.svelte new file mode 100644 index 000000000..d612deb43 --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-input.svelte @@ -0,0 +1,15 @@ + + +{#if MyComponent} + + +{/if} diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-requirements.json new file mode 100644 index 000000000..b224b893c --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-requirements.json @@ -0,0 +1,3 @@ +{ + "svelte": "^4" +} \ No newline at end of file From c78608b82248863b35ceaab79059848f4954f4ff Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Wed, 30 Apr 2025 16:42:07 +0900 Subject: [PATCH 2/2] Create three-turkeys-marry.md --- .changeset/three-turkeys-marry.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/three-turkeys-marry.md diff --git a/.changeset/three-turkeys-marry.md b/.changeset/three-turkeys-marry.md new file mode 100644 index 000000000..6bf12d43d --- /dev/null +++ b/.changeset/three-turkeys-marry.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-svelte": patch +--- + +fix(no-unused-svelte-ignore): ignore reactive-component warnings