Skip to content

Commit

Permalink
Merge pull request sass#2247 from mgreter/bugfix/issue-2246
Browse files Browse the repository at this point in the history
Fixes extensions with selector schema in at-root
  • Loading branch information
mgreter committed Dec 15, 2016
2 parents 72457e9 + 05c86cd commit f43d007
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions src/expand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -611,18 +611,29 @@ namespace Sass {
{
if (CommaSequence_Selector* extender = dynamic_cast<CommaSequence_Selector*>(selector())) {
Selector* s = e->selector();
if (Selector_Schema* schema = dynamic_cast<Selector_Schema*>(s)) {
if (schema->has_parent_ref()) s = eval(schema);
CommaSequence_Selector* sl = NULL;
// check if we already have a valid selector list
if ((sl = dynamic_cast<CommaSequence_Selector*>(s))) {}
// convert selector schema to a selector list
else if (Selector_Schema* schema = dynamic_cast<Selector_Schema*>(s)) {
if (schema->has_real_parent_ref()) {
sl = eval(schema);
} else {
selector_stack.push_back(0);
sl = eval(schema);
sl->remove_parent_selectors();
selector_stack.pop_back();
}
}
if (CommaSequence_Selector* sl = dynamic_cast<CommaSequence_Selector*>(s)) {
for (Sequence_Selector* cs : *sl) {
if (cs != NULL && cs->head() != NULL) {
cs->head()->media_block(media_block_stack.back());
}
// abort on invalid selector
if (sl == NULL) return NULL;
for (Sequence_Selector* cs : *sl) {
if (cs != NULL && cs->head() != NULL) {
cs->head()->media_block(media_block_stack.back());
}
}
selector_stack.push_back(0);
expand_selector_list(s, extender);
expand_selector_list(sl, extender);
selector_stack.pop_back();
}
return 0;
Expand Down

0 comments on commit f43d007

Please sign in to comment.