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 = {
114
114
node . metadata . used ||= node . children . every (
115
115
( { metadata } ) => metadata . is_global || metadata . is_global_like
116
116
) ;
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
+ }
117
130
} ,
118
131
RelativeSelector ( node , context ) {
119
132
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';
2
2
3
3
export default test ( {
4
4
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
+ } ,
5
19
{
6
20
code : 'css_unused_selector' ,
7
21
message : 'Unused CSS selector ".unused :global"' ,
8
22
start : {
9
- line : 25 ,
23
+ line : 34 ,
10
24
column : 2 ,
11
- character : 229
25
+ character : 332
12
26
} ,
13
27
end : {
14
- line : 25 ,
28
+ line : 34 ,
15
29
column : 17 ,
16
- character : 244
30
+ character : 347
17
31
}
18
32
} ,
19
33
{
20
34
code : 'css_unused_selector' ,
21
35
message : 'Unused CSS selector ".unused :global(.z)"' ,
22
36
start : {
23
- line : 31 ,
37
+ line : 40 ,
24
38
column : 2 ,
25
- character : 283
39
+ character : 386
26
40
} ,
27
41
end : {
28
- line : 31 ,
42
+ line : 40 ,
29
43
column : 21 ,
30
- character : 302
44
+ character : 405
31
45
}
32
46
}
33
47
]
Original file line number Diff line number Diff line change 8
8
9
9
.x {
10
10
color : green;
11
+ & : hover {
12
+ color : green;
13
+ }
14
+ & div {
15
+ color : green;
16
+ }
17
+ /* (unused) .unused {
18
+ color: red;
19
+ }*/
11
20
}
12
21
13
22
p : where (.svelte-xyz ) {
Original file line number Diff line number Diff line change 10
10
11
11
:global(.x ) {
12
12
color : green ;
13
+ &:hover {
14
+ color : green ;
15
+ }
16
+ &div {
17
+ color : green ;
18
+ }
19
+ .unused {
20
+ color : red ;
21
+ }
13
22
}
14
23
15
24
p :global {
You can’t perform that action at this time.
0 commit comments