fix: mark nesting selectors of global parents as used (#13445)

fixes #13387
pull/13485/head
Simon H 1 day ago committed by GitHub
parent c716329806
commit 6c1e462927
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -114,6 +114,19 @@ const css_visitors = {
node.metadata.used ||= node.children.every(
({ metadata }) => metadata.is_global || metadata.is_global_like
);
if (
node.metadata.rule?.metadata.parent_rule &&
node.children[0]?.selectors[0]?.type === 'NestingSelector'
) {
const parent_is_global = node.metadata.rule.metadata.parent_rule.prelude.children.some(
(child) => child.children.length === 1 && child.children[0].metadata.is_global
);
// mark `&:hover` in `:global(.foo) { &:hover { color: green }}` as used
if (parent_is_global) {
node.metadata.used = true;
}
}
},
RelativeSelector(node, context) {
node.metadata.is_global = node.selectors.length >= 1 && is_global(node);

@ -2,32 +2,46 @@ import { test } from '../../test';
export default test({
warnings: [
{
code: 'css_unused_selector',
message: 'Unused CSS selector ".unused"',
start: {
line: 19,
column: 3,
character: 204
},
end: {
line: 19,
column: 10,
character: 211
}
},
{
code: 'css_unused_selector',
message: 'Unused CSS selector ".unused :global"',
start: {
line: 25,
line: 34,
column: 2,
character: 229
character: 332
},
end: {
line: 25,
line: 34,
column: 17,
character: 244
character: 347
}
},
{
code: 'css_unused_selector',
message: 'Unused CSS selector ".unused :global(.z)"',
start: {
line: 31,
line: 40,
column: 2,
character: 283
character: 386
},
end: {
line: 31,
line: 40,
column: 21,
character: 302
character: 405
}
}
]

@ -8,6 +8,15 @@
.x {
color: green;
&:hover {
color: green;
}
&div {
color: green;
}
/* (unused) .unused {
color: red;
}*/
}
p:where(.svelte-xyz) {

@ -10,6 +10,15 @@
:global(.x) {
color: green;
&:hover {
color: green;
}
&div {
color: green;
}
.unused {
color: red;
}
}
p :global {

Loading…
Cancel
Save