From 5670d7211b748beb07a0e8b17234843f054cb7a2 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Sun, 7 May 2023 12:14:41 +0900 Subject: [PATCH 1/2] fix: false positives for builtin `$$` vars in `svelte/prefer-destructured-store-props` --- src/rules/prefer-destructured-store-props.ts | 4 ++-- .../valid/builtin-vars01-input.svelte | 7 +++++++ .../valid/builtin-vars02-input.svelte | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars01-input.svelte create mode 100644 tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars02-input.svelte diff --git a/src/rules/prefer-destructured-store-props.ts b/src/rules/prefer-destructured-store-props.ts index ca5afcb84..c31912e53 100644 --- a/src/rules/prefer-destructured-store-props.ts +++ b/src/rules/prefer-destructured-store-props.ts @@ -157,7 +157,7 @@ export default createRule("prefer-destructured-store-props", { // $: ({ bar } = $foo); // {bar} // Same with {$foo["bar"]} - "MemberExpression[object.type='Identifier'][object.name=/^\\$/]"( + "MemberExpression[object.type='Identifier'][object.name=/^\\$[^\\$]/]"( node: StoreMemberExpression, ) { if (inScriptElement) return // Within a script tag @@ -166,7 +166,7 @@ export default createRule("prefer-destructured-store-props", { Identifier(node: TSESTree.Identifier) { storeMemberAccessStack[0]?.identifiers.push(node) }, - "MemberExpression[object.type='Identifier'][object.name=/^\\$/]:exit"( + "MemberExpression[object.type='Identifier'][object.name=/^\\$[^\\$]/]:exit"( node: StoreMemberExpression, ) { if (storeMemberAccessStack[0]?.node !== node) return diff --git a/tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars01-input.svelte b/tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars01-input.svelte new file mode 100644 index 000000000..79543c6d5 --- /dev/null +++ b/tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars01-input.svelte @@ -0,0 +1,7 @@ +
+ + {#if $$slots.description} +
+ + {/if} +
diff --git a/tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars02-input.svelte b/tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars02-input.svelte new file mode 100644 index 000000000..cf19d13be --- /dev/null +++ b/tests/fixtures/rules/prefer-destructured-store-props/valid/builtin-vars02-input.svelte @@ -0,0 +1,2 @@ + + From 52201c91013452e042a14e393f33d65cf00aa7c0 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Sun, 7 May 2023 12:29:16 +0900 Subject: [PATCH 2/2] Create gorgeous-geckos-unite.md --- .changeset/gorgeous-geckos-unite.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gorgeous-geckos-unite.md diff --git a/.changeset/gorgeous-geckos-unite.md b/.changeset/gorgeous-geckos-unite.md new file mode 100644 index 000000000..3473ada47 --- /dev/null +++ b/.changeset/gorgeous-geckos-unite.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-svelte": patch +--- + +fix: false positives for builtin `$$` vars in `svelte/prefer-destructured-store-props`