From 252a9c9242870fbf6af1b49be7d0cf1f641db573 Mon Sep 17 00:00:00 2001 From: baseballyama Date: Mon, 17 Mar 2025 17:44:00 +0900 Subject: [PATCH] fix --- .changeset/fuzzy-ads-join.md | 5 +++++ .../src/rules/no-unused-props.ts | 2 +- .../no-unused-props/valid/ts-basic-input.svelte | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 .changeset/fuzzy-ads-join.md create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/ts-basic-input.svelte diff --git a/.changeset/fuzzy-ads-join.md b/.changeset/fuzzy-ads-join.md new file mode 100644 index 000000000..5af5eb134 --- /dev/null +++ b/.changeset/fuzzy-ads-join.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-svelte': patch +--- + +fix: resolve false positives on nested objects in `no-unused-props` rule diff --git a/packages/eslint-plugin-svelte/src/rules/no-unused-props.ts b/packages/eslint-plugin-svelte/src/rules/no-unused-props.ts index 1588f3b32..0d057b3f0 100644 --- a/packages/eslint-plugin-svelte/src/rules/no-unused-props.ts +++ b/packages/eslint-plugin-svelte/src/rules/no-unused-props.ts @@ -319,7 +319,7 @@ export default createRule('no-unused-props', { .filter((v): v is TSESTree.Identifier => v.type === 'Identifier'); for (const identifier of identifiers) { const paths = getUsedNestedPropertyNames(identifier); - usedPaths.push(...paths); + usedPaths.push(...paths.map((path) => [identifier.name, ...path])); } } else if (node.id.type === 'Identifier') { usedPaths = getUsedNestedPropertyNames(node.id); diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/ts-basic-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/ts-basic-input.svelte new file mode 100644 index 000000000..d2c509f6a --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/ts-basic-input.svelte @@ -0,0 +1,15 @@ + + +

{myObjectProp.value} {myObjectProp.value2}