From a82de89adc832f264cd66ed84c9b6b04295c6f4e Mon Sep 17 00:00:00 2001 From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com> Date: Wed, 24 Jun 2020 06:20:36 -0400 Subject: [PATCH] complex selector equality ignores line_break --- src/selector/complex.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/selector/complex.rs b/src/selector/complex.rs index c3a8afe..a2160ec 100644 --- a/src/selector/complex.rs +++ b/src/selector/complex.rs @@ -1,4 +1,7 @@ -use std::fmt::{self, Display, Write}; +use std::{ + fmt::{self, Display, Write}, + hash::{Hash, Hasher}, +}; use crate::error::SassResult; @@ -8,7 +11,7 @@ use super::{CompoundSelector, Pseudo, SelectorList, SimpleSelector, Specificity} /// /// A complex selector is composed of `CompoundSelector`s separated by /// `Combinator`s. It selects elements based on their parent selectors. -#[derive(Clone, Debug, Eq, PartialEq, Hash)] +#[derive(Clone, Debug)] pub(crate) struct ComplexSelector { /// The components of this selector. /// @@ -26,6 +29,20 @@ pub(crate) struct ComplexSelector { pub line_break: bool, } +impl PartialEq for ComplexSelector { + fn eq(&self, other: &Self) -> bool { + self.components == other.components + } +} + +impl Eq for ComplexSelector {} + +impl Hash for ComplexSelector { + fn hash(&self, state: &mut H) { + self.components.hash(state); + } +} + impl fmt::Display for ComplexSelector { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let mut last_component = None;