ladybird/Libraries/LibWeb/CSS/Parser
Sam Atkins 5a1eb9e220 LibWeb/CSS: Keep invalid parts of <forgiving-selector-list>s around
Attempt 2! Reverts 2a5dbedad4

This time, set up a different combinator when producing a relative
invalid selector rather than a standalone one. This fixes the crash.

Original description below for simplicity because it still applies.

---

Selectors like `:is(.valid, &!?!?!invalid)` need to keep the invalid
part around, even though it will never match, for a couple of reasons:

- Serialization needs to include them
- For nesting, we care if a `&` appeared anywhere in the selector, even
  in an invalid part.

So this patch introduces an `Invalid` simple selector type, which simply
holds its original ComponentValues. We search through these looking for
`&`, and we dump them out directly when asked to serialize.
2024-11-14 13:20:01 +01:00
..
ComponentValue.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
ComponentValue.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Dimension.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
GradientParsing.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Helpers.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
MediaParsing.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Parser.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Parser.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
ParsingContext.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
ParsingContext.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
RuleParsing.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SelectorParsing.cpp LibWeb/CSS: Keep invalid parts of <forgiving-selector-list>s around 2024-11-14 13:20:01 +01:00
Token.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Token.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Tokenizer.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Tokenizer.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
TokenStream.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Types.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Types.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00