| Index: Source/core/css/CSSGrammar.y.in
|
| diff --git a/Source/core/css/CSSGrammar.y.in b/Source/core/css/CSSGrammar.y.in
|
| index 008756f09231fa0a51fe087b31269f7845bcee65..c8b7fc05d572cafc41812932e04a79c5b58daf6f 100644
|
| --- a/Source/core/css/CSSGrammar.y.in
|
| +++ b/Source/core/css/CSSGrammar.y.in
|
| @@ -87,7 +87,7 @@ static inline bool isCSSTokenAString(int yytype)
|
|
|
| %}
|
|
|
| -%expect 1
|
| +%expect 0
|
|
|
| %nonassoc LOWEST_PREC
|
|
|
| @@ -1539,12 +1539,6 @@ declaration_list:
|
| | decl_list {
|
| $$ = $1;
|
| }
|
| - | decl_list_recovery {
|
| - $$ = false;
|
| - }
|
| - | decl_list decl_list_recovery {
|
| - $$ = $1;
|
| - }
|
| ;
|
|
|
| decl_list:
|
| @@ -1552,26 +1546,12 @@ decl_list:
|
| parser->startProperty();
|
| $$ = $1;
|
| }
|
| - | decl_list_recovery ';' maybe_space {
|
| - parser->startProperty();
|
| - $$ = false;
|
| - }
|
| | decl_list declaration ';' maybe_space {
|
| parser->startProperty();
|
| $$ = $1;
|
| if ($2)
|
| $$ = $2;
|
| }
|
| - | decl_list decl_list_recovery ';' maybe_space {
|
| - parser->startProperty();
|
| - $$ = $1;
|
| - }
|
| - ;
|
| -
|
| -decl_list_recovery:
|
| - error error_location error_recovery {
|
| - parser->reportError($2, CSSParser::PropertyDeclarationError);
|
| - }
|
| ;
|
|
|
| declaration:
|
| @@ -1581,7 +1561,7 @@ declaration:
|
| parser->endProperty($6, true);
|
| }
|
| |
|
| - property ':' maybe_space error_location expr prio {
|
| + property ':' maybe_space error_location valid_expr prio {
|
| $$ = false;
|
| bool isPropertyParsed = false;
|
| if ($1 && $5) {
|
| @@ -1598,33 +1578,28 @@ declaration:
|
| parser->endProperty($6, isPropertyParsed);
|
| }
|
| |
|
| - property declaration_recovery {
|
| - parser->endProperty(false, false, CSSParser::GeneralError);
|
| + property ':' maybe_space error_location valid_expr prio error error_recovery {
|
| + /* When we encounter something like p {color: red !important fail;} we should drop the declaration */
|
| + parser->reportError($4, CSSParser::InvalidPropertyValueError);
|
| + parser->endProperty(false, false);
|
| $$ = false;
|
| }
|
| |
|
| - property ':' maybe_space error_location expr prio declaration_recovery {
|
| - /* When we encounter something like p {color: red !important fail;} we should drop the declaration */
|
| + property ':' maybe_space error_location error error_recovery {
|
| + parser->reportError($4, CSSParser::InvalidPropertyValueError);
|
| parser->endProperty(false, false);
|
| $$ = false;
|
| }
|
| |
|
| - IMPORTANT_SYM maybe_space declaration_recovery {
|
| - /* Handle this case: div { text-align: center; !important } Just reduce away the stray !important. */
|
| + property error error_location error_recovery {
|
| + parser->reportError($3, CSSParser::PropertyDeclarationError);
|
| parser->endProperty(false, false, CSSParser::GeneralError);
|
| $$ = false;
|
| }
|
| |
|
| - property ':' maybe_space declaration_recovery {
|
| - /* if we come across rules with invalid values like this case: p { weight: *; }, just discard the rule */
|
| - parser->endProperty(false, false);
|
| - $$ = false;
|
| - }
|
| - ;
|
| -
|
| -declaration_recovery:
|
| error error_location error_recovery {
|
| - parser->reportError($2);
|
| + parser->reportError($2, CSSParser::PropertyDeclarationError);
|
| + $$ = false;
|
| }
|
| ;
|
|
|
|
|