diff --git a/components/selectors/parser.rs b/components/selectors/parser.rs index 4a6be161a22..19455af659c 100644 --- a/components/selectors/parser.rs +++ b/components/selectors/parser.rs @@ -237,7 +237,7 @@ impl SelectorMethods for SimpleSelector { match *self { Negation(ref negated) => { - for selector in negated { + for selector in negated.iter() { if !selector.visit(visitor) { return false; } @@ -453,7 +453,7 @@ pub enum SimpleSelector { AttrSuffixNeverMatch(AttrSelector, Impl::AttrValue), // empty value // Pseudo-classes - Negation(Vec>), + Negation(Box<[ComplexSelector]>), FirstChild, LastChild, OnlyChild, Root, Empty, @@ -1163,7 +1163,7 @@ fn parse_negation(parser: &P, where P: Parser, Impl: SelectorImpl { input.parse_comma_separated(|input| ComplexSelector::parse(parser, input)) - .map(SimpleSelector::Negation) + .map(|v| SimpleSelector::Negation(v.into_boxed_slice())) } /// simple_selector_sequence @@ -1681,7 +1681,7 @@ pub mod tests { ComplexSelector::from_vec(vec!( SimpleSelector::ID(DummyAtom::from("provel")), SimpleSelector::Class(DummyAtom::from("old")), - ))) + ))).into_boxed_slice() ))), pseudo_element: None, specificity: specificity(1, 1, 0), diff --git a/components/style/gecko/selector_parser.rs b/components/style/gecko/selector_parser.rs index d9372742578..e87336669d5 100644 --- a/components/style/gecko/selector_parser.rs +++ b/components/style/gecko/selector_parser.rs @@ -217,7 +217,7 @@ macro_rules! pseudo_class_name { /// /// TODO(emilio): We disallow combinators and pseudos here, so we /// should use SimpleSelector instead - MozAny(Vec>), + MozAny(Box<[ComplexSelector]>), } } } @@ -266,7 +266,7 @@ impl SelectorMethods for NonTSPseudoClass { where V: SelectorVisitor, { if let NonTSPseudoClass::MozAny(ref selectors) = *self { - for selector in selectors { + for selector in selectors.iter() { if !selector.visit(visitor) { return false; } @@ -401,7 +401,7 @@ impl<'a> ::selectors::Parser for SelectorParser<'a> { if selectors.iter().flat_map(|x| x.iter_raw()).any(|s| s.is_combinator()) { return Err(()) } - NonTSPseudoClass::MozAny(selectors) + NonTSPseudoClass::MozAny(selectors.into_boxed_slice()) } _ => return Err(()) }