Skip to content

Commit a4a5511

Browse files
committed
Fix @elseif keyword not being parsed
1 parent f82a41b commit a4a5511

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

parser.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1630,12 +1630,13 @@ namespace Sass {
16301630
if (!peek< exactly<'{'> >()) error("expected '{' after the predicate for @if", pstate);
16311631
Block* consequent = parse_block();
16321632
Block* alternative = 0;
1633-
if (lex< kwd_else_directive >()) {
1634-
if (peek< exactly<if_after_else_kwd> >()) {
1635-
alternative = new (ctx.mem) Block(pstate);
1636-
(*alternative) << parse_if_directive(true);
1637-
}
1638-
else if (!peek< exactly<'{'> >()) {
1633+
1634+
if (lex< elseif_directive >()) {
1635+
alternative = new (ctx.mem) Block(pstate);
1636+
(*alternative) << parse_if_directive(true);
1637+
}
1638+
else if (lex< kwd_else_directive >()) {
1639+
if (!peek< exactly<'{'> >()) {
16391640
error("expected '{' after @else", pstate);
16401641
}
16411642
else {

prelexer.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,10 @@ namespace Sass {
262262
return word<else_kwd>(src);
263263
}
264264
const char* elseif_directive(const char* src) {
265-
return sequence< kwd_else_directive,
266-
optional_css_whitespace,
267-
word< if_after_else_kwd > >(src);
265+
return alternatives< word<else_kwd>,
266+
sequence< exactly< else_kwd >,
267+
optional_css_whitespace,
268+
word< if_after_else_kwd > > >(src);
268269
}
269270

270271
const char* kwd_for_directive(const char* src) {

0 commit comments

Comments
 (0)