@@ -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