@@ -379,6 +379,7 @@ namespace Sass {
379
379
// solve the double dispatch problem by using RTTI information via dynamic cast
380
380
if (const Pseudo_Selector* lhs = Cast<Pseudo_Selector>(this )) {return *lhs == rhs; }
381
381
else if (const Wrapped_Selector* lhs = Cast<Wrapped_Selector>(this )) {return *lhs == rhs; }
382
+ else if (const Element_Selector* lhs = Cast<Element_Selector>(this )) {return *lhs == rhs; }
382
383
else if (const Attribute_Selector* lhs = Cast<Attribute_Selector>(this )) {return *lhs == rhs; }
383
384
else if (name_ == rhs.name_ )
384
385
{ return is_ns_eq (rhs); }
@@ -390,6 +391,7 @@ namespace Sass {
390
391
// solve the double dispatch problem by using RTTI information via dynamic cast
391
392
if (const Pseudo_Selector* lhs = Cast<Pseudo_Selector>(this )) {return *lhs < rhs; }
392
393
else if (const Wrapped_Selector* lhs = Cast<Wrapped_Selector>(this )) {return *lhs < rhs; }
394
+ else if (const Element_Selector* lhs = Cast<Element_Selector>(this )) {return *lhs < rhs; }
393
395
else if (const Attribute_Selector* lhs = Cast<Attribute_Selector>(this )) {return *lhs < rhs; }
394
396
if (is_ns_eq (rhs))
395
397
{ return name_ < rhs.name_ ; }
@@ -668,6 +670,41 @@ namespace Sass {
668
670
return false ;
669
671
}
670
672
673
+ bool Element_Selector::operator < (const Element_Selector& rhs) const
674
+ {
675
+ if (is_ns_eq (rhs))
676
+ { return name () < rhs.name (); }
677
+ return ns () < rhs.ns ();
678
+ }
679
+
680
+ bool Element_Selector::operator < (const Simple_Selector& rhs) const
681
+ {
682
+ if (Element_Selector_Ptr_Const w = Cast<Element_Selector>(&rhs))
683
+ {
684
+ return *this < *w;
685
+ }
686
+ if (is_ns_eq (rhs))
687
+ { return name () < rhs.name (); }
688
+ return ns () < rhs.ns ();
689
+ }
690
+
691
+ bool Element_Selector::operator == (const Element_Selector& rhs) const
692
+ {
693
+ return is_ns_eq (rhs) &&
694
+ name () == rhs.name ();
695
+ }
696
+
697
+ bool Element_Selector::operator == (const Simple_Selector& rhs) const
698
+ {
699
+ if (Element_Selector_Ptr_Const w = Cast<Element_Selector>(&rhs))
700
+ {
701
+ return is_ns_eq (rhs) &&
702
+ name () == rhs.name () &&
703
+ *this == *w;
704
+ }
705
+ return false ;
706
+ }
707
+
671
708
bool Pseudo_Selector::operator == (const Pseudo_Selector& rhs) const
672
709
{
673
710
if (is_ns_eq (rhs) && name () == rhs.name ())
0 commit comments