Skip to content

Commit 3e8e941

Browse files
committed
Restore old compound extend behavior (with deprecation)
1 parent f964dcd commit 3e8e941

File tree

1 file changed

+27
-21
lines changed

1 file changed

+27
-21
lines changed

src/expand.cpp

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -669,38 +669,44 @@ namespace Sass {
669669
// evaluate the selector
670670
e->selector(eval(e->selector()));
671671

672+
if (e->selector()) {
672673

674+
for (auto complex : e->selector()->elements()) {
673675

674-
auto list = e->selector();
675-
if (list) {
676-
for (auto complex : list->elements()) {
676+
if (complex->length() != 1) {
677+
error("complex selectors may not be extended.", complex->pstate(), traces);
678+
}
677679

678-
if (complex->length() != 1) {
679-
std::cerr << "complex selectors may not be extended." << "\n"; exit(1);
680-
}
680+
if (auto compound = complex->first()->getCompound()) {
681681

682-
if (auto compound = complex->first()->getCompound()) {
682+
if (compound->length() != 1) {
683683

684-
if (compound->length() != 1) {
685-
std::cerr <<
686-
"compound selectors may no longer be extended.\n"
687-
"Consider `@extend ${compound.components.join(', ')}` instead.\n"
688-
"See http://bit.ly/ExtendCompound for details.\n";
689-
}
684+
std::cerr <<
685+
"compound selectors may no longer be extended.\n"
686+
"Consider `@extend ${compound.components.join(', ')}` instead.\n"
687+
"See http://bit.ly/ExtendCompound for details.\n";
690688

691-
// Pass every selector we ever see to extender (to make them findable for extend)
692-
ctx.extender.addExtension(selector(), compound->first(), e, mediaStack.back());
689+
// Make this an error once deprecation is over
690+
for (SimpleSelectorObj simple : compound->elements()) {
691+
// Pass every selector we ever see to extender (to make them findable for extend)
692+
ctx.extender.addExtension(selector(), simple, e, mediaStack.back());
693+
}
693694

694-
}
695-
else {
696-
std::cerr << "complex selectors may not be extended." << "\n"; exit(1);
695+
}
696+
else {
697+
// Pass every selector we ever see to extender (to make them findable for extend)
698+
ctx.extender.addExtension(selector(), compound->first(), e, mediaStack.back());
699+
}
700+
701+
}
702+
else {
703+
error("complex selectors may not be extended.", complex->pstate(), traces);
704+
}
697705
}
698706
}
699-
}
700-
return nullptr;
701-
702707

703708
return nullptr;
709+
704710
}
705711

706712
Statement* Expand::operator()(Definition* d)

0 commit comments

Comments
 (0)