From 843c65ca16277223470c0cc23c49f565e29e3ac3 Mon Sep 17 00:00:00 2001 From: numzero Date: Sat, 19 Apr 2025 14:57:52 +0300 Subject: [PATCH] closures!!! --- src/twopass.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/twopass.rs b/src/twopass.rs index 846c66b..5acd9c2 100644 --- a/src/twopass.rs +++ b/src/twopass.rs @@ -324,7 +324,15 @@ impl Eval for Call { impl Eval for Function { fn eval(&self, ctx: &RunContext) -> types::Value { - todo!() + let upvalues: Vec<_> = self + .upvalues + .iter() + .map(|(_name, id)| ctx.var(*id)) + .collect(); + let self_ = self.clone(); // TODO reference, somehow + Some( + types::Function::new(self.name.clone(), move |args| self_.call(&upvalues, args)).into(), + ) } }