Bug 1369187: style: Assert that if we find an eager, element-backed pseudo, it's ::before or ::after. r?bholley draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Wed, 31 May 2017 17:20:31 +0200
changeset 587384 106812a7d2643c10c1bbccce47b23fe5b7bf3922
parent 587383 fe3c8d0df07811235ad3857f7e9e46561b019b8d
child 587406 bf8cb1e1286493d23daafca841a4516dd6a49da0
child 587586 3cedbc97b616b02895296008b6b20728c789cda8
push id61681
push userbmo:emilio+bugs@crisal.io
push dateWed, 31 May 2017 21:41:57 +0000
reviewersbholley
bugs1369187
milestone55.0a1
Bug 1369187: style: Assert that if we find an eager, element-backed pseudo, it's ::before or ::after. r?bholley This holds because ::first-line and ::first-letter are not element-backed. MozReview-Commit-ID: 67FU15pCLqW
servo/components/style/matching.rs
--- a/servo/components/style/matching.rs
+++ b/servo/components/style/matching.rs
@@ -352,16 +352,17 @@ trait PrivateMatchMethods: TElement {
             // pseudo-elements, it doesn't seem worth the effort at a glance.
             //
             // For the same reason as described in match_primary, if we are
             // computing default styles, we aren't guaranteed the parent
             // will have eagerly computed our styles, so we just handled it
             // below like a lazy pseudo.
             let only_default_rules = context.shared.traversal_flags.for_default_styles();
             if pseudo.is_eager() && !only_default_rules {
+                debug_assert!(pseudo.is_before_or_after());
                 let parent = self.parent_element().unwrap();
                 if !parent.may_have_animations() ||
                    primary_style.rules.get_animation_rules().is_empty() {
                     let parent_data = parent.borrow_data().unwrap();
                     let pseudo_style =
                         parent_data.styles().pseudos.get(&pseudo).unwrap();
                     let values = cascade_visited.values(pseudo_style);
                     return values.clone()