File tree Expand file tree Collapse file tree 4 files changed +53
-8
lines changed
src/compiler/phases/2-analyze/css
tests/css/samples/global-nested-block Expand file tree Collapse file tree 4 files changed +53
-8
lines changed Original file line number Diff line number Diff line change @@ -114,6 +114,19 @@ const css_visitors = {
114114 node . metadata . used ||= node . children . every (
115115 ( { metadata } ) => metadata . is_global || metadata . is_global_like
116116 ) ;
117+
118+ if (
119+ node . metadata . rule ?. metadata . parent_rule &&
120+ node . children [ 0 ] ?. selectors [ 0 ] ?. type === 'NestingSelector'
121+ ) {
122+ const parent_is_global = node . metadata . rule . metadata . parent_rule . prelude . children . some (
123+ ( child ) => child . children . length === 1 && child . children [ 0 ] . metadata . is_global
124+ ) ;
125+ // mark `&:hover` in `:global(.foo) { &:hover { color: green }}` as used
126+ if ( parent_is_global ) {
127+ node . metadata . used = true ;
128+ }
129+ }
117130 } ,
118131 RelativeSelector ( node , context ) {
119132 node . metadata . is_global = node . selectors . length >= 1 && is_global ( node ) ;
Original file line number Diff line number Diff line change @@ -2,32 +2,46 @@ import { test } from '../../test';
22
33export default test ( {
44 warnings : [
5+ {
6+ code : 'css_unused_selector' ,
7+ message : 'Unused CSS selector ".unused"' ,
8+ start : {
9+ line : 19 ,
10+ column : 3 ,
11+ character : 204
12+ } ,
13+ end : {
14+ line : 19 ,
15+ column : 10 ,
16+ character : 211
17+ }
18+ } ,
519 {
620 code : 'css_unused_selector' ,
721 message : 'Unused CSS selector ".unused :global"' ,
822 start : {
9- line : 25 ,
23+ line : 34 ,
1024 column : 2 ,
11- character : 229
25+ character : 332
1226 } ,
1327 end : {
14- line : 25 ,
28+ line : 34 ,
1529 column : 17 ,
16- character : 244
30+ character : 347
1731 }
1832 } ,
1933 {
2034 code : 'css_unused_selector' ,
2135 message : 'Unused CSS selector ".unused :global(.z)"' ,
2236 start : {
23- line : 31 ,
37+ line : 40 ,
2438 column : 2 ,
25- character : 283
39+ character : 386
2640 } ,
2741 end : {
28- line : 31 ,
42+ line : 40 ,
2943 column : 21 ,
30- character : 302
44+ character : 405
3145 }
3246 }
3347 ]
Original file line number Diff line number Diff line change 88
99 .x {
1010 color : green;
11+ & : hover {
12+ color : green;
13+ }
14+ & div {
15+ color : green;
16+ }
17+ /* (unused) .unused {
18+ color: red;
19+ }*/
1120 }
1221
1322 p : where (.svelte-xyz ) {
Original file line number Diff line number Diff line change 1010
1111 :global(.x ) {
1212 color : green ;
13+ &:hover {
14+ color : green ;
15+ }
16+ &div {
17+ color : green ;
18+ }
19+ .unused {
20+ color : red ;
21+ }
1322 }
1423
1524 p :global {
You can’t perform that action at this time.
0 commit comments