diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index f8d13d33a82..595a9078141 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -1308,7 +1308,7 @@ impl ShorthandId { /// Servo's representation of a declared value for a given `T`, which is the /// declared value for that property. -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone, Debug, Eq, PartialEq, ToCss)] pub enum DeclaredValue<'a, T: 'a> { /// A known specified value from the stylesheet. Value(&'a T), @@ -1360,6 +1360,19 @@ pub struct UnparsedValue { from_shorthand: Option, } +impl ToCss for UnparsedValue { + fn to_css(&self, dest: &mut CssWriter) -> fmt::Result + where + W: Write, + { + // https://drafts.csswg.org/css-variables/#variables-in-shorthands + if self.from_shorthand.is_none() { + dest.write_str(&*self.css)?; + } + Ok(()) + } +} + impl UnparsedValue { fn substitute_variables( &self, @@ -1425,25 +1438,6 @@ impl UnparsedValue { } } -impl<'a, T: ToCss> ToCss for DeclaredValue<'a, T> { - fn to_css(&self, dest: &mut CssWriter) -> fmt::Result - where - W: Write, - { - match *self { - DeclaredValue::Value(ref inner) => inner.to_css(dest), - DeclaredValue::WithVariables(ref with_variables) => { - // https://drafts.csswg.org/css-variables/#variables-in-shorthands - if with_variables.from_shorthand.is_none() { - dest.write_str(&*with_variables.css)? - } - Ok(()) - }, - DeclaredValue::CSSWideKeyword(ref keyword) => keyword.to_css(dest), - } - } -} - /// An identifier for a given property declaration, which can be either a /// longhand or a custom property. #[derive(Clone, Copy, PartialEq)] @@ -1742,14 +1736,7 @@ impl ToCss for VariableDeclaration { where W: fmt::Write, { - // https://drafts.csswg.org/css-variables/#variables-in-shorthands - match self.value.from_shorthand { - None => { - dest.write_str(&*self.value.css)? - } - Some(..) => {}, - } - Ok(()) + self.value.to_css(dest) } }