diff options
-rw-r--r-- | askama_derive/src/heritage.rs | 12 | ||||
-rw-r--r-- | askama_parser/src/node.rs | 4 |
2 files changed, 6 insertions, 10 deletions
diff --git a/askama_derive/src/heritage.rs b/askama_derive/src/heritage.rs index d34ef33..4e12f35 100644 --- a/askama_derive/src/heritage.rs +++ b/askama_derive/src/heritage.rs @@ -4,7 +4,7 @@ use std::path::{Path, PathBuf}; use crate::config::Config; use crate::CompileError; -use parser::node::{BlockDef, Loop, Macro, Match, Node}; +use parser::node::{BlockDef, Macro, Match, Node}; pub(crate) struct Heritage<'a> { pub(crate) root: &'a Context<'a>, @@ -86,13 +86,9 @@ impl Context<'_> { nested.push(&cond.nodes); } } - Node::Loop(Loop { - body, - else_nodes: else_block, - .. - }) => { - nested.push(body); - nested.push(else_block); + Node::Loop(l) => { + nested.push(&l.body); + nested.push(&l.else_nodes); } Node::Match(Match { arms, .. }) => { for arm in arms { diff --git a/askama_parser/src/node.rs b/askama_parser/src/node.rs index 2d82868..02b90b5 100644 --- a/askama_parser/src/node.rs +++ b/askama_parser/src/node.rs @@ -23,7 +23,7 @@ pub enum Node<'a> { Let(Let<'a>), If(If<'a>), Match(Match<'a>), - Loop(Loop<'a>), + Loop(Box<Loop<'a>>), Extends(Extends<'a>), BlockDef(BlockDef<'a>), Include(Include<'a>), @@ -51,7 +51,7 @@ impl<'a> Node<'a> { map(Call::parse, Self::Call), map(Let::parse, Self::Let), map(|i| If::parse(i, s), Self::If), - map(|i| Loop::parse(i, s), Self::Loop), + map(|i| Loop::parse(i, s), |l| Self::Loop(Box::new(l))), map(|i| Match::parse(i, s), Self::Match), map(Extends::parse, Self::Extends), map(Include::parse, Self::Include), |