[csswg-drafts] [css-values-5] Clarify how to parse `<if-args-branch>` (#12487)

cdoublev has just created a new issue for https://github.com/w3c/csswg-drafts:

== [css-values-5] Clarify how to parse `<if-args-branch>` ==
https://drafts.csswg.org/css-values-5/#typedef-if-args-branch

  > `<if-args-branch> = <declaration-value> : <declaration-value>?`

[`<declaration-value>`](https://drafts.csswg.org/css-syntax-3/#typedef-declaration-value) accepts `:` so `: <declaration-value>?` seems unreachable... unless a CSS parser is supposed to backtrack, drop the last token matched for `<declaration-value>`, then resume parsing? Or should it be `<declaration-value> [: <declaration-value>]?`?

I have a more specific question about the spread syntax. I could open a separate issue but the spread syntax seems only relevant for `<if-args-branch>` if I am not mistaken, since the argument grammars of other arbitrary substitutions take a comma-separated `<declaration-value>`, so they will always get a match.

  > This behavior can be worked around by immediately preceding an arbitrary substitution function with the spread syntax `...`, indicating that it must be resolved "early", before division into arguments.

What is accepted (at parse time) after `...`? Only an arbitrary substitution? Should it be valid itself? (eg. `if(...if())`)

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/12487 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Wednesday, 16 July 2025 10:14:12 UTC