diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs index a8b33de..6e44ac2 100644 --- a/maud_macros/src/parse.rs +++ b/maud_macros/src/parse.rs @@ -233,10 +233,10 @@ impl<'cx, 'i> Parser<'cx, 'i> { }, [] => parse_error!(self, sp, "expected body for this @if"), }} - // Parse the (optional) else + // Parse the (optional) @else let else_body = match self.input { - [keyword!(_, k), ..] if k.is_keyword(Keyword::Else) => { - self.shift(1); + [at!(), keyword!(_, k), ..] if k.is_keyword(Keyword::Else) => { + self.shift(2); match self.input { [keyword!(sp, k), ..] if k.is_keyword(Keyword::If) => { self.shift(1); diff --git a/maud_macros/tests/tests.rs b/maud_macros/tests/tests.rs index f49a617..f1667df 100644 --- a/maud_macros/tests/tests.rs +++ b/maud_macros/tests/tests.rs @@ -207,11 +207,11 @@ mod control { html!(s, { @if number == 1 { "one" - } else if number == 2 { + } @else if number == 2 { "two" - } else if number == 3 { + } @else if number == 3 { "three" - } else { + } @else { "oh noes" } }).unwrap(); @@ -226,7 +226,7 @@ mod control { html!(s, { @if let Some(value) = input { ^value - } else { + } @else { "oh noes" } }).unwrap();