diff --git a/components/style/properties/helpers.mako.rs b/components/style/properties/helpers.mako.rs index 873809c85985..a8cc751655a1 100644 --- a/components/style/properties/helpers.mako.rs +++ b/components/style/properties/helpers.mako.rs @@ -827,7 +827,7 @@ pub fn parse_into<'i, 't>(declarations: &mut SourcePropertyDeclaration, context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<(), ParseError<'i>> { - parse_value(context, input).map(|longhands| { + input.parse_entirely(|input| parse_value(context, input)).map(|longhands| { % for sub_property in shorthand.sub_properties: declarations.push(PropertyDeclaration::${sub_property.camel_case}( longhands.${sub_property.ident} diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 59536af635d4..07b5ca077d5c 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -1553,8 +1553,9 @@ impl PropertyDeclaration { } else { input.look_for_var_functions(); let start = input.position(); - input.parse_entirely(|input| id.parse_into(declarations, context, input)) - .or_else(|_| { + // Not using parse_entirely here: each ${shorthand.ident}::parse_into function + // needs to do so *before* pushing to `declarations`. + id.parse_into(declarations, context, input).or_else(|_| { while let Ok(_) = input.next() {} // Look for var() after the error. if input.seen_var_functions() { input.reset(start);