@@ -868,7 +868,7 @@ namespace Sass {
868
868
for (SimpleSelectorObj simple : elements ()) {
869
869
if (PseudoSelector * pseudo = Cast<PseudoSelector>(simple)) {
870
870
if (SelectorList* sel = Cast<SelectorList>(pseudo->selector ())) {
871
- if (parent) {
871
+ if (parent && !parent-> has_real_parent_ref () ) {
872
872
pseudo->selector (sel->resolve_parent_refs (
873
873
pstack, traces, implicit_parent));
874
874
}
@@ -976,20 +976,22 @@ namespace Sass {
976
976
}
977
977
978
978
/* 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)
980
981
{
981
982
982
983
sass::vector<sass::vector<ComplexSelectorObj>> vars;
983
984
984
985
auto parent = pstack.back ();
986
+ auto hasRealParent = has_real_parent_ref ();
985
987
986
- if (has_real_parent_ref () && !parent) {
988
+ if (hasRealParent && !parent) {
987
989
throw Exception::TopLevelParent (traces, pstate ());
988
990
}
989
991
990
992
if (!chroots () && parent) {
991
993
992
- if (!has_real_parent_ref () && !implicit_parent) {
994
+ if (!hasRealParent && !implicit_parent) {
993
995
SelectorList* retval = SASS_MEMORY_NEW (SelectorList, pstate (), 1 );
994
996
retval->append (this );
995
997
return retval;
@@ -1020,10 +1022,10 @@ namespace Sass {
1020
1022
for (auto items : res) {
1021
1023
if (items.size () > 0 ) {
1022
1024
ComplexSelectorObj first = SASS_MEMORY_COPY (items[0 ]);
1023
- first->hasPreLineFeed (first->hasPreLineFeed () || (!has_real_parent_ref () && hasPreLineFeed ()));
1025
+ first->hasPreLineFeed (first->hasPreLineFeed () || (!hasRealParent && hasPreLineFeed ()));
1024
1026
// ToDo: remove once we know how to handle line feeds
1025
1027
// 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);
1027
1029
// first->has_line_break(first->has_line_break() || has_line_break());
1028
1030
first->chroots (true ); // has been resolved by now
1029
1031
for (size_t i = 1 ; i < items.size (); i += 1 ) {
0 commit comments