- From: Simon Sapin <simon.sapin@kozea.fr>
- Date: Fri, 17 Aug 2012 08:59:43 +0200
- To: www-style@gtalbot.org
- CC: W3C www-style mailing list <www-style@w3.org>
Le 17/08/2012 06:34, "Gérard Talbot" a écrit :
> The modified test - and this is my mistake - looks/seems now still doubtful:
>
> http://test.csswg.org/suites/css2.1/nightly-unstable/html4/unterminated-string-001.htm
>
>
> div
> {
> color: green;
> font-family: 'Courier;
> color: red;
> }
>
>
> If I understand the parsing rules, error handling rules, the declaration
> block
> font-family: 'Courier;
> should be dropped and only such declaration block (which ends with a
> semicolon). The
> color: red;
> declaration block should*not* be dropped. And therefore, the div's text
> should be red!
>
> Is my reasoning correct?
I think not. The semicolon after Courier is part of the BAD_STRING token
which ends at the unescaped newline, so there is no DELIM semicolon
token to end the declaration. The tokens in the property value for this
declaration are S BAD_STRING S IDENT : S IDENT.
> The test would be much better (in as for parsing errors and error
> handling) and more precise if it had/if it was:
>
> div
> {
> color: green;
> font-family: 'Courier
> color: red;
> }
>
> Am I correct ?
This yields the same tokens as above, but might better show its intent.
But there are two errors in this test: the un-terminated string and the
missing semi-colon. I don’t know if such tests exist already but the
handling of the two errors could be tested separately:
/* Valid declaration with an invalid IDENT S IDENT : S IDENT value
for 'color' */
div {
color: green;
color: red
color: red;
}
/* Un-terminated string */
div:before {
content: 'PASS'
;
content: 'FAIL
;
}
--
Simon Sapin
Received on Friday, 17 August 2012 07:00:47 UTC