Vixen
dd8b0a81
csharp
public readonly record struct Selector

One selector, compiled into something the matcher can run.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

⚠ There is no pseudo-element here, and there used to be. A fourth field held the interned name of a ::before or ::after, and nothing in the matcher, the rule set or the resolver ever read it — so the rule matched the originating element and coloured it. A field written and never read is not a partial feature; it is a rule that means something else. SelectorCompiler now refuses the selector with a diagnostic, and the field is gone so that nothing can be built on top of a value that is always absent. Doc 43's A12 is where generated boxes are planned. ⚠ It is not blocked on the one-node-one-box invariant, which is what this used to say: that invariant has moved twice since — inline fragmentation, then anonymous block boxes — and neither move reached this. What A12 needs is a second style slot, not a second rectangle.

Fields and properties (3)

  • public int Start

    Where its compounds begin.

  • public int Count

    How many compounds it has.

  • public Specificity Specificity

    How specific it is.

Methods (1)

  • public Selector(int Start, int Count, Specificity Specificity)

    One selector, compiled into something the matcher can run.

Used by (16)

  • CombinatorPairTestsVixen.Ui.Styling.Tests
  • RepositoryScanVixen.Ui.Styling.Tests
  • RuleIndexVixen.Ui.Styling
  • SelectorCompilerVixen.Ui.Styling
  • SelectorMatcherVixen.Ui.Styling
  • SelectorMatchingTestsVixen.Ui.Styling.Tests
  • SelectorQueryVixen.Ui.Testing
  • SelectorSurfaceSweepTestsVixen.Ui.Styling.Tests
  • SelectorTableVixen.Ui.Styling
  • StyleFixtureVixen.Ui.Styling.Tests
  • StyleInvalidatorVixen.Ui.Styling
  • StyleResolverVixen.Ui.Styling
  • StyleRuleVixen.Ui.Styling
  • StyleRuleSetVixen.Ui.Styling
  • StyleSheetLoaderVixen.Ui.Styling
  • WhereSelectorTestsVixen.Ui.Styling.Tests