@@ -868,7 +868,7 @@ namespace Sass {
868868 for (SimpleSelectorObj simple : elements ()) {
869869 if (PseudoSelector * pseudo = Cast<PseudoSelector>(simple)) {
870870 if (SelectorList* sel = Cast<SelectorList>(pseudo->selector ())) {
871- if (parent) {
871+ if (parent && !parent-> has_real_parent_ref () ) {
872872 pseudo->selector (sel->resolve_parent_refs (
873873 pstack, traces, implicit_parent));
874874 }
@@ -976,20 +976,22 @@ namespace Sass {
976976 }
977977
978978 /* better return sass::vector? only - is empty container anyway? */
979- SelectorList* ComplexSelector::resolve_parent_refs (SelectorStack pstack, Backtraces& traces, bool implicit_parent)
979+ SelectorList* ComplexSelector::resolve_parent_refs (
980+ SelectorStack pstack, Backtraces& traces, bool implicit_parent)
980981 {
981982
982983 sass::vector<sass::vector<ComplexSelectorObj>> vars;
983984
984985 auto parent = pstack.back ();
986+ auto hasRealParent = has_real_parent_ref ();
985987
986- if (has_real_parent_ref () && !parent) {
988+ if (hasRealParent && !parent) {
987989 throw Exception::TopLevelParent (traces, pstate ());
988990 }
989991
990992 if (!chroots () && parent) {
991993
992- if (!has_real_parent_ref () && !implicit_parent) {
994+ if (!hasRealParent && !implicit_parent) {
993995 SelectorList* retval = SASS_MEMORY_NEW (SelectorList, pstate (), 1 );
994996 retval->append (this );
995997 return retval;
@@ -1020,10 +1022,10 @@ namespace Sass {
10201022 for (auto items : res) {
10211023 if (items.size () > 0 ) {
10221024 ComplexSelectorObj first = SASS_MEMORY_COPY (items[0 ]);
1023- first->hasPreLineFeed (first->hasPreLineFeed () || (!has_real_parent_ref () && hasPreLineFeed ()));
1025+ first->hasPreLineFeed (first->hasPreLineFeed () || (!hasRealParent && hasPreLineFeed ()));
10241026 // ToDo: remove once we know how to handle line feeds
10251027 // ToDo: currently a mashup between ruby and dart sass
1026- // if (has_real_parent_ref() ) first->has_line_feed(false);
1028+ // if (hasRealParent ) first->has_line_feed(false);
10271029 // first->has_line_break(first->has_line_break() || has_line_break());
10281030 first->chroots (true ); // has been resolved by now
10291031 for (size_t i = 1 ; i < items.size (); i += 1 ) {
0 commit comments