diff --git a/src/lib.rs b/src/lib.rs index 785d7998..46a8621f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26105,6 +26105,24 @@ mod tests { "#, "@property --property-name{syntax:\"+\";inherits:false;initial-value:#ff0 #00f}", ); + minify_test( + r#" + @property --property-name { + syntax: ''; + inherits: false; + initial-value: yellow; + } + .foo { + color: var(--property-name) + } + @property --property-name { + syntax: ''; + inherits: true; + initial-value: blue; + } + "#, + "@property --property-name{syntax:\"\";inherits:true;initial-value:#00f}.foo{color:var(--property-name)}", + ); } #[test] diff --git a/src/rules/mod.rs b/src/rules/mod.rs index d3e659ea..6d6ba8fb 100644 --- a/src/rules/mod.rs +++ b/src/rules/mod.rs @@ -498,6 +498,7 @@ impl<'i, T: Clone> CssRuleList<'i, T> { ) -> Result<(), MinifyError> { let mut keyframe_rules = HashMap::new(); let mut layer_rules = HashMap::new(); + let mut property_rules = HashMap::new(); let mut style_rules = HashMap::with_capacity_and_hasher(self.0.len(), BuildHasherDefault::::default()); let mut rules = Vec::new(); @@ -810,6 +811,13 @@ impl<'i, T: Clone> CssRuleList<'i, T> { if context.unused_symbols.contains(property.name.0.as_ref()) { continue; } + + if let Some(index) = property_rules.get_mut(&property.name) { + rules[*index] = rule; + continue; + } else { + property_rules.insert(property.name.clone(), rules.len()); + } } _ => {} }