Commit 5dce1fb
committed
Fix specificity of Selectors Level 4 functional pseudo-classes
The functional selector-list pseudo-classes :is(), :has(), :matches() and
:any() were each counted as a single class and their arguments were not
counted at all, so their specificity was always (0,0,1,0). Per the CSS
Selectors specification they contribute the specificity of their argument
instead, and :where() always contributes zero.
Track the open selector-list pseudo-classes on a stack and, while inside
one whose arguments count, fold their tokens into the specificity as usual;
skip them inside any enclosing :where(). The function token itself no longer
counts as a class.1 parent 2f400e3 commit 5dce1fb
3 files changed
Lines changed: 54 additions & 2 deletions
File tree
- cssutils/css
- newsfragments
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
72 | 75 | | |
73 | 76 | | |
74 | 77 | | |
| |||
137 | 140 | | |
138 | 141 | | |
139 | 142 | | |
140 | | - | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
141 | 157 | | |
142 | 158 | | |
143 | | - | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
144 | 169 | | |
145 | 170 | | |
146 | 171 | | |
| |||
241 | 266 | | |
242 | 267 | | |
243 | 268 | | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
244 | 273 | | |
245 | 274 | | |
246 | 275 | | |
| |||
425 | 454 | | |
426 | 455 | | |
427 | 456 | | |
| 457 | + | |
428 | 458 | | |
429 | 459 | | |
430 | 460 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
447 | 447 | | |
448 | 448 | | |
449 | 449 | | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
450 | 471 | | |
451 | 472 | | |
452 | 473 | | |
| |||
0 commit comments