pull/11098/head
Simon Holthausen 2 years ago
parent 116cdafdb9
commit 5c25d41794

@ -1,5 +1,6 @@
import { walk } from 'zimmerframe';
import { warn } from '../../../warnings.js';
import { is_keyframes_node } from '../../css.js';
/**
* @param {import('#compiler').Css.StyleSheet} stylesheet
@ -11,15 +12,18 @@ export function warn_unused(stylesheet, warnings) {
/** @type {import('zimmerframe').Visitors<import('#compiler').Css.Node, { warnings: import('../../types.js').RawWarning[], stylesheet: import('#compiler').Css.StyleSheet }>} */
const visitors = {
Atrule(node, context) {
if (!is_keyframes_node(node)) {
context.next();
}
},
PseudoClassSelector(node, context) {
if (node.name === 'is' || node.name === 'where') {
context.next();
}
},
ComplexSelector(node, context) {
if (!node.metadata.used) {
for (let i = context.path.length - 1; i >= 0; i--) {
const parent = context.path[i];
if (parent.type === 'RelativeSelector' && parent.metadata.is_global) {
return; // no need to recurse; everything below is global, too
}
}
const content = context.state.stylesheet.content;
const text = content.styles.substring(node.start - content.start, node.end - content.start);
warn(context.state.warnings, node, context.path, 'css-unused-selector', text);

@ -5,8 +5,8 @@ export default test({
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".b ~ .c"',
start: { character: 199, column: 1, line: 13 },
end: { character: 206, column: 8, line: 13 }
start: { character: 198, column: 1, line: 13 },
end: { character: 205, column: 8, line: 13 }
}
]
});

@ -5,13 +5,13 @@ export default test({
{
code: 'css-unused-selector',
end: {
character: 479,
character: 472,
column: 19,
line: 22
},
message: 'Unused CSS selector ":global(.x) + .bar"',
start: {
character: 461,
character: 454,
column: 1,
line: 22
}

@ -5,38 +5,38 @@ export default test({
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".a ~ .b"',
start: { character: 111, column: 1, line: 10 },
end: { character: 118, column: 8, line: 10 }
start: { character: 110, column: 1, line: 10 },
end: { character: 117, column: 8, line: 10 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".b ~ .c"',
start: { character: 138, column: 1, line: 11 },
end: { character: 145, column: 8, line: 11 }
start: { character: 137, column: 1, line: 11 },
end: { character: 144, column: 8, line: 11 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".c ~ .f"',
start: { character: 165, column: 1, line: 12 },
end: { character: 172, column: 8, line: 12 }
start: { character: 164, column: 1, line: 12 },
end: { character: 171, column: 8, line: 12 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".f ~ .g"',
start: { character: 192, column: 1, line: 13 },
end: { character: 199, column: 8, line: 13 }
start: { character: 191, column: 1, line: 13 },
end: { character: 198, column: 8, line: 13 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".b ~ .f"',
start: { character: 219, column: 1, line: 14 },
end: { character: 226, column: 8, line: 14 }
start: { character: 218, column: 1, line: 14 },
end: { character: 225, column: 8, line: 14 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".b ~ .g"',
start: { character: 246, column: 1, line: 15 },
end: { character: 253, column: 8, line: 15 }
start: { character: 245, column: 1, line: 15 },
end: { character: 252, column: 8, line: 15 }
}
]
});

@ -2,12 +2,19 @@ import { test } from '../../test';
export default test({
warnings: [
// TODO
// {
// code: 'css-unused-selector',
// message: 'Unused CSS selector ".a ~ .b"',
// start: { character: 111, column: 1, line: 10 },
// end: { character: 118, column: 8, line: 10 }
// },
{
code: 'css-unused-selector',
end: {
character: 496,
column: 10,
line: 26
},
message: 'Unused CSS selector ".x + .bar"',
start: {
character: 487,
column: 1,
line: 26
}
}
]
});

@ -6,12 +6,12 @@ export default test({
code: 'css-unused-selector',
message: 'Unused CSS selector ":host > span"',
start: {
character: 147,
character: 145,
column: 1,
line: 18
},
end: {
character: 159,
character: 157,
column: 13,
line: 18
}

@ -0,0 +1,20 @@
import { test } from '../../test';
export default test({
warnings: [
{
code: 'css-unused-selector',
end: {
character: 38,
column: 11,
line: 6
},
message: 'Unused CSS selector "z"',
start: {
character: 37,
column: 10,
line: 6
}
}
]
});

@ -0,0 +1,104 @@
import { test } from '../../test';
export default test({
warnings: [
{
code: 'css-unused-selector',
end: {
character: 239,
column: 13,
line: 20
},
message: 'Unused CSS selector ".unused"',
start: {
character: 232,
column: 6,
line: 20
}
},
{
code: 'css-unused-selector',
end: {
character: 302,
column: 10,
line: 27
},
message: 'Unused CSS selector ".unused"',
start: {
character: 295,
column: 3,
line: 27
}
},
{
code: 'css-unused-selector',
end: {
character: 328,
column: 6,
line: 30
},
message: 'Unused CSS selector ".c"',
start: {
character: 326,
column: 4,
line: 30
}
},
{
code: 'css-unused-selector',
end: {
character: 381,
column: 10,
line: 37
},
message: 'Unused CSS selector ".unused"',
start: {
character: 374,
column: 3,
line: 37
}
},
{
code: 'css-unused-selector',
end: {
character: 471,
column: 7,
line: 47
},
message: 'Unused CSS selector "& &"',
start: {
character: 468,
column: 4,
line: 47
}
},
{
code: 'css-unused-selector',
end: {
character: 634,
column: 5,
line: 66
},
message: 'Unused CSS selector "&.b"',
start: {
character: 631,
column: 2,
line: 66
}
},
{
code: 'css-unused-selector',
end: {
character: 666,
column: 9,
line: 70
},
message: 'Unused CSS selector ".unused"',
start: {
character: 659,
column: 2,
line: 70
}
}
]
});

@ -5,62 +5,62 @@ export default test({
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".a + .c"',
start: { character: 479, column: 1, line: 23 },
end: { character: 486, column: 8, line: 23 }
start: { character: 478, column: 1, line: 23 },
end: { character: 485, column: 8, line: 23 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".a + .g"',
start: { character: 506, column: 1, line: 24 },
end: { character: 513, column: 8, line: 24 }
start: { character: 505, column: 1, line: 24 },
end: { character: 512, column: 8, line: 24 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".b + .e"',
start: { character: 533, column: 1, line: 25 },
end: { character: 540, column: 8, line: 25 }
start: { character: 532, column: 1, line: 25 },
end: { character: 539, column: 8, line: 25 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".c + .g"',
start: { character: 560, column: 1, line: 26 },
end: { character: 567, column: 8, line: 26 }
start: { character: 559, column: 1, line: 26 },
end: { character: 566, column: 8, line: 26 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".c + .k"',
start: { character: 587, column: 1, line: 27 },
end: { character: 594, column: 8, line: 27 }
start: { character: 586, column: 1, line: 27 },
end: { character: 593, column: 8, line: 27 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".d + .d"',
start: { character: 614, column: 1, line: 28 },
end: { character: 621, column: 8, line: 28 }
start: { character: 613, column: 1, line: 28 },
end: { character: 620, column: 8, line: 28 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".e + .f"',
start: { character: 641, column: 1, line: 29 },
end: { character: 648, column: 8, line: 29 }
start: { character: 640, column: 1, line: 29 },
end: { character: 647, column: 8, line: 29 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".f + .f"',
start: { character: 668, column: 1, line: 30 },
end: { character: 675, column: 8, line: 30 }
start: { character: 667, column: 1, line: 30 },
end: { character: 674, column: 8, line: 30 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".g + .j"',
start: { character: 695, column: 1, line: 31 },
end: { character: 702, column: 8, line: 31 }
start: { character: 694, column: 1, line: 31 },
end: { character: 701, column: 8, line: 31 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".g + .h + .i + .j"',
start: { character: 722, column: 1, line: 32 },
end: { character: 739, column: 18, line: 32 }
start: { character: 721, column: 1, line: 32 },
end: { character: 738, column: 18, line: 32 }
}
]
});

@ -5,14 +5,14 @@ export default test({
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".a + .d"',
start: { character: 172, column: 1, line: 12 },
end: { character: 179, column: 8, line: 12 }
start: { character: 171, column: 1, line: 12 },
end: { character: 178, column: 8, line: 12 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".b + .c"',
start: { character: 199, column: 1, line: 13 },
end: { character: 206, column: 8, line: 13 }
start: { character: 198, column: 1, line: 13 },
end: { character: 205, column: 8, line: 13 }
}
]
});

@ -5,20 +5,20 @@ export default test({
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".a + .b"',
start: { character: 84, column: 1, line: 9 },
end: { character: 91, column: 8, line: 9 }
start: { character: 83, column: 1, line: 9 },
end: { character: 90, column: 8, line: 9 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".b + .c"',
start: { character: 111, column: 1, line: 10 },
end: { character: 118, column: 8, line: 10 }
start: { character: 110, column: 1, line: 10 },
end: { character: 117, column: 8, line: 10 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".c + .f"',
start: { character: 138, column: 1, line: 11 },
end: { character: 145, column: 8, line: 11 }
start: { character: 137, column: 1, line: 11 },
end: { character: 144, column: 8, line: 11 }
}
]
});

@ -5,20 +5,20 @@ export default test({
{
code: 'css-unused-selector',
message: 'Unused CSS selector "article > *"',
start: { character: 10, column: 1, line: 2 },
end: { character: 21, column: 12, line: 2 }
start: { character: 9, column: 1, line: 2 },
end: { character: 20, column: 12, line: 2 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector "article *"',
start: { character: 49, column: 1, line: 6 },
end: { character: 58, column: 10, line: 6 }
start: { character: 47, column: 1, line: 6 },
end: { character: 56, column: 10, line: 6 }
},
{
code: 'css-unused-selector',
message: 'Unused CSS selector ".article > *"',
start: { character: 86, column: 1, line: 10 },
end: { character: 98, column: 13, line: 10 }
start: { character: 83, column: 1, line: 10 },
end: { character: 95, column: 13, line: 10 }
}
]
});

@ -1,6 +1,6 @@
/* (unused) article > * {
font-size: 36px;
}*/
}*/
/* (unused) article * {
font-size: 36px;

@ -1,7 +1,7 @@
<style>
article > * {
font-size: 36px;
}
}
article * {
font-size: 36px;

@ -0,0 +1,20 @@
import { test } from '../../test';
export default test({
warnings: [
{
code: 'css-unused-selector',
end: {
character: 32,
column: 3,
line: 5
},
message: 'Unused CSS selector "h2"',
start: {
character: 30,
column: 1,
line: 5
}
}
]
});
Loading…
Cancel
Save