Fixes parsing a regex lint selector with a character class like
`[foo=/[a-z]/]`.
The parser just looked for the next `]` character and aborted there. It
didn't account for the regex grammar having this character too.
Fixes https://github.com/denoland/deno/issues/30460
This PR adds support for `:has/:is/:where()` and `:not()`. The latter
was already present, but found a bunch of issues with it and I'd say
that it didn't really work before this PR.
Fixes https://github.com/denoland/deno/issues/28335
This PR adds support for field selectors (`.<field>`) in the lint plugin
API. This is supported in ESLint as well, but was missing in our
implementation.
```css
/* Only search the test expression of an IfStatement */
IfStatement.test
```
Fixes https://github.com/denoland/deno/issues/28314
The selector splitting code that's used for JS linting plugins didn't
properly account for selectors being a single character. This can happen
in the case of `*`.
Instead of comparing against the length, we'll now check if the
remaining string portion is not empty, which is more robust. It also
allows us to detect trailing whitespace, which we didn't before.