From aeb036f4dc2ede271d6c0710e91fae605ecdac84 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sat, 29 Jan 2022 22:32:30 +0100 Subject: Fix that templates don't create a scope --- src/eval/mod.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/eval/mod.rs') diff --git a/src/eval/mod.rs b/src/eval/mod.rs index 05fa7eba..2fa07d49 100644 --- a/src/eval/mod.rs +++ b/src/eval/mod.rs @@ -187,7 +187,7 @@ fn process_nodes( ctx: &mut EvalContext, nodes: &mut impl Iterator, ) -> TypResult { - let prev = mem::take(&mut ctx.styles); + let prev_styles = mem::take(&mut ctx.styles); let mut seq = Vec::with_capacity(nodes.size_hint().1.unwrap_or_default()); while let Some(piece) = nodes.next() { // Need to deal with wrap here. @@ -201,7 +201,7 @@ fn process_nodes( seq.push(Styled::new(node, ctx.styles.clone())); } - ctx.styles = prev; + ctx.styles = prev_styles; Ok(Node::Sequence(seq)) } @@ -461,7 +461,10 @@ impl Eval for TemplateExpr { type Output = Node; fn eval(&self, ctx: &mut EvalContext) -> TypResult { - self.body().eval(ctx) + ctx.scopes.enter(); + let node = self.body().eval(ctx)?; + ctx.scopes.exit(); + Ok(node) } } -- cgit v1.2.3