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}