From 83da0784e93fe148579de6fcd665ed94da76411d Mon Sep 17 00:00:00 2001 From: ottomated <31470743+ottomated@users.noreply.github.com> Date: Wed, 26 Feb 2025 02:57:19 -0800 Subject: [PATCH] fix: account for mustache inside mustache (#1091) --- .changeset/better-rice-join.md | 5 +++++ .../eslint-plugin-svelte/src/rules/no-useless-mustaches.ts | 4 ++++ .../no-useless-mustaches/valid/valid-test01-input.svelte | 1 + 3 files changed, 10 insertions(+) create mode 100644 .changeset/better-rice-join.md diff --git a/.changeset/better-rice-join.md b/.changeset/better-rice-join.md new file mode 100644 index 000000000..aaaa000c2 --- /dev/null +++ b/.changeset/better-rice-join.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-svelte': patch +--- + +fix: Don't remove mustache'd string literals if they contain curly braces diff --git a/packages/eslint-plugin-svelte/src/rules/no-useless-mustaches.ts b/packages/eslint-plugin-svelte/src/rules/no-useless-mustaches.ts index 169cc8ef9..05d3af28e 100644 --- a/packages/eslint-plugin-svelte/src/rules/no-useless-mustaches.ts +++ b/packages/eslint-plugin-svelte/src/rules/no-useless-mustaches.ts @@ -85,6 +85,10 @@ export default createRule('no-useless-mustaches', { return; } + if (rawValue.includes('{')) { + return; + } + let hasEscape = false; if (rawValue !== strValue) { // check escapes diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-useless-mustaches/valid/valid-test01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-useless-mustaches/valid/valid-test01-input.svelte index 5da305aa8..46402aeda 100644 --- a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-useless-mustaches/valid/valid-test01-input.svelte +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-useless-mustaches/valid/valid-test01-input.svelte @@ -8,5 +8,6 @@ foo 'foo' {1} {null} {`foo${foo}`} +{'{foo'}