- From: Guillaume via GitHub <sysbot+gh@w3.org>
- Date: Mon, 25 Nov 2024 15:11:56 +0000
- To: public-css-archive@w3.org
cdoublev has just created a new issue for https://github.com/w3c/csswg-drafts:
== [css-syntax-3] Clarify why declarations after/before invalid rule error should be separated ==
When a rule is interleaved between declarations and triggers an "invalid rule error", the [spec](https://drafts.csswg.org/css-syntax-3/#consume-a-blocks-contents) splits the declarations:
  > - **If an [invalid rule error](https://drafts.csswg.org/css-syntax-3/#invalid-rule-error) was returned**
  > If `decls` is not empty, append `decls` to `rules`, and set `decls` to a fresh empty list of declarations.
An *invalid rule error* is produced in a nested context from any list of tokens that:
  - is not a valid at-rule or declaration in the context
  - does not start with a dashed identifier followed by `:`
  - does not include a non nested "stop token": `}` and `;`
  - ends with a `{}`-block
  - fails to be parsed as a valid qualified rule in the context
Examples: `{}`, `. {}`, `div: hover {}`, `undeclared-ns|* {}`.
If I am not mistaken, this intentionally takes space for future selector syntaxes. https://github.com/w3c/csswg-drafts/issues/8738#issuecomment-1747640413 touches on that.
It might be useful to add a note, since that is not what the current version of Chrome and FF do:
```js
const sheet = new CSSStyleSheet
sheet.insertRule(`
  style {
    color: green;
    . {}
    color: orange;
    undeclared-ns|style {}
    color: red;
  }
`)
sheet.cssRules[0].cssText; // style { color: purple; }
```
There does not seem to be any test on [WPT](https://github.com/web-platform-tests/wpt/blob/master/css/css-nesting/nested-declarations-cssom.html).
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/11271 using your GitHub account
-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 25 November 2024 15:11:58 UTC