diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-01-29 22:32:30 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-01-29 22:32:57 +0100 |
| commit | aeb036f4dc2ede271d6c0710e91fae605ecdac84 (patch) | |
| tree | 1941fc92ba7240c1026a5f52e3a49496350f0255 /src/eval | |
| parent | 44ebefbec23114d6ed7a96e7e3cb9078441aff31 (diff) | |
Fix that templates don't create a scope
Diffstat (limited to 'src/eval')
| -rw-r--r-- | src/eval/mod.rs | 9 |
1 files changed, 6 insertions, 3 deletions
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<Item = MarkupNode>, ) -> TypResult<Node> { - 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::Output> { - self.body().eval(ctx) + ctx.scopes.enter(); + let node = self.body().eval(ctx)?; + ctx.scopes.exit(); + Ok(node) } } |
