diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-01-27 13:55:04 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-01-27 13:55:04 +0100 |
| commit | 2641c2d20ef5ddaf8e1dc91f4a69abfe2c170e4d (patch) | |
| tree | b4da89ca8b882e24d6ae306e0c041a525efecd80 /src | |
| parent | ce8138c68557a2d158424a8aa6056d73ff9cb1ba (diff) | |
Always evaluate for loop to template 🔁
Diffstat (limited to 'src')
| -rw-r--r-- | src/eval/mod.rs | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs index cadffef5..13d242f8 100644 --- a/src/eval/mod.rs +++ b/src/eval/mod.rs @@ -388,11 +388,7 @@ impl Eval for Spanned<&ExprFor> { fn eval(self, ctx: &mut EvalContext) -> Self::Output { let iter = self.v.iter.eval(ctx); - let mut output = if let Expr::Template(_) = self.v.body.v { - Value::Template(vec![]) - } else { - Value::None - }; + let mut output = vec![]; macro_rules! iterate { (for ($($binding:ident => $value:ident),*) in $iter:expr) => { @@ -400,16 +396,12 @@ impl Eval for Spanned<&ExprFor> { for ($($value),*) in $iter { $(ctx.scopes.define($binding.as_str(), $value);)* - let value = self.v.body.eval(ctx); - - if let Value::Template(prev) = &mut output { - if let Value::Template(new) = value { - prev.extend(new); - } + if let Value::Template(new) = self.v.body.eval(ctx) { + output.extend(new); } } - return output; + return Value::Template(output); }; } |
