fix: correctly visit elements that may match :has() during pruning

#15207

Closing issue

Pull request

Closed
7
7nik
Feb 4, 2025, 2:45 PM

Fixes #14072

:has() was matching only against descendants or siblings, but not sibling's descendants.

Also, in a case like :has(> .foo > .bar) it was matching against children instead of descendants, so I had to drop the > optimization. But, to ensure that in case like :has(> .foo) it matches only the direct children, the inner selector is prepended with a selector of new type that matches only certain element.

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.
  • If this PR changes code within packages/svelte/src, add a changeset (npx changeset).

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

Info

Closed at Mar 14, 2025, 9:44 PM
Assignees None
Reviewers None
Labels None
Milestone None