diff --git a/.changeset/plenty-hairs-kneel.md b/.changeset/plenty-hairs-kneel.md new file mode 100644 index 0000000000..ea7ce094b6 --- /dev/null +++ b/.changeset/plenty-hairs-kneel.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: disregard TypeScript nodes when pruning CSS diff --git a/packages/svelte/src/compiler/phases/2-analyze/css/utils.js b/packages/svelte/src/compiler/phases/2-analyze/css/utils.js index 99603fad29..bbe33a5647 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/css/utils.js +++ b/packages/svelte/src/compiler/phases/2-analyze/css/utils.js @@ -7,6 +7,13 @@ const UNKNOWN = {}; * @param {Set} set */ function gather_possible_values(node, set) { + // @ts-expect-error + if (node.type === 'TSAsExpression') { + // @ts-expect-error + gather_possible_values(node.expression, set); + return; + } + if (node.type === 'Literal') { set.add(String(node.value)); } else if (node.type === 'ConditionalExpression') { diff --git a/packages/svelte/tests/css/samples/unused-ts-as-expression/_config.js b/packages/svelte/tests/css/samples/unused-ts-as-expression/_config.js new file mode 100644 index 0000000000..e2679428cc --- /dev/null +++ b/packages/svelte/tests/css/samples/unused-ts-as-expression/_config.js @@ -0,0 +1,20 @@ +import { test } from '../../test'; + +export default test({ + warnings: [ + { + code: 'css_unused_selector', + end: { + character: 127, + column: 28, + line: 10 + }, + message: 'Unused CSS selector "[data-active=\'true\'] > span"', + start: { + character: 100, + column: 1, + line: 10 + } + } + ] +}); diff --git a/packages/svelte/tests/css/samples/unused-ts-as-expression/expected.css b/packages/svelte/tests/css/samples/unused-ts-as-expression/expected.css new file mode 100644 index 0000000000..571d2acfbc --- /dev/null +++ b/packages/svelte/tests/css/samples/unused-ts-as-expression/expected.css @@ -0,0 +1,4 @@ + + /* (unused) [data-active='true'] > span { + background-color: red; + }*/ diff --git a/packages/svelte/tests/css/samples/unused-ts-as-expression/input.svelte b/packages/svelte/tests/css/samples/unused-ts-as-expression/input.svelte new file mode 100644 index 0000000000..24fc0096bf --- /dev/null +++ b/packages/svelte/tests/css/samples/unused-ts-as-expression/input.svelte @@ -0,0 +1,13 @@ + + +
+ +
+ +