From 2641c2d20ef5ddaf8e1dc91f4a69abfe2c170e4d Mon Sep 17 00:00:00 2001 From: Laurenz Date: Wed, 27 Jan 2021 13:55:04 +0100 Subject: [PATCH] =?UTF-8?q?Always=20evaluate=20for=20loop=20to=20template?= =?UTF-8?q?=20=F0=9F=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/eval/mod.rs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/eval/mod.rs b/src/eval/mod.rs index cadffef5e..13d242f80 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); }; }