resolve regression related to equality of selectors
This commit is contained in:
parent
81aa6ee4b8
commit
991be977ac
@ -2,7 +2,7 @@ use codemap::Span;
|
|||||||
|
|
||||||
use super::{ComplexSelector, CssMediaQuery, SimpleSelector};
|
use super::{ComplexSelector, CssMediaQuery, SimpleSelector};
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
|
#[derive(Clone, Debug)]
|
||||||
pub(crate) struct Extension {
|
pub(crate) struct Extension {
|
||||||
/// The selector in which the `@extend` appeared.
|
/// The selector in which the `@extend` appeared.
|
||||||
pub extender: ComplexSelector,
|
pub extender: ComplexSelector,
|
||||||
|
@ -55,7 +55,7 @@ impl Default for ExtendMode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
#[derive(Clone, Debug)]
|
||||||
pub(crate) struct Extender {
|
pub(crate) struct Extender {
|
||||||
/// A map from all simple selectors in the stylesheet to the selector lists
|
/// A map from all simple selectors in the stylesheet to the selector lists
|
||||||
/// that contain them.
|
/// that contain them.
|
||||||
|
@ -2,7 +2,7 @@ use codemap::Span;
|
|||||||
|
|
||||||
use crate::selector::Selector;
|
use crate::selector::Selector;
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
#[derive(Clone, Debug)]
|
||||||
pub(crate) struct ExtendRule {
|
pub(crate) struct ExtendRule {
|
||||||
pub selector: Selector,
|
pub selector: Selector,
|
||||||
pub is_optional: bool,
|
pub is_optional: bool,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use std::{
|
use std::{
|
||||||
collections::VecDeque,
|
collections::VecDeque,
|
||||||
fmt::{self, Write},
|
fmt::{self, Write},
|
||||||
|
hash::{Hash, Hasher},
|
||||||
mem,
|
mem,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ use crate::{
|
|||||||
///
|
///
|
||||||
/// A selector list is composed of `ComplexSelector`s. It matches an element
|
/// A selector list is composed of `ComplexSelector`s. It matches an element
|
||||||
/// that matches any of the component selectors.
|
/// that matches any of the component selectors.
|
||||||
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
|
#[derive(Clone, Debug)]
|
||||||
pub(crate) struct SelectorList {
|
pub(crate) struct SelectorList {
|
||||||
/// The components of this selector.
|
/// The components of this selector.
|
||||||
///
|
///
|
||||||
@ -27,6 +28,20 @@ pub(crate) struct SelectorList {
|
|||||||
pub span: Span,
|
pub span: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl PartialEq for SelectorList {
|
||||||
|
fn eq(&self, other: &SelectorList) -> bool {
|
||||||
|
self.components == other.components
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Eq for SelectorList {}
|
||||||
|
|
||||||
|
impl Hash for SelectorList {
|
||||||
|
fn hash<H: Hasher>(&self, state: &mut H) {
|
||||||
|
self.components.hash(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl fmt::Display for SelectorList {
|
impl fmt::Display for SelectorList {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
let complexes = self.components.iter().filter(|c| !c.is_invisible());
|
let complexes = self.components.iter().filter(|c| !c.is_invisible());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user