diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-12-30 19:40:29 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-12-30 20:00:50 +0100 |
| commit | a6d90c1bf1e9fefa0af04206909a40e112d6bb14 (patch) | |
| tree | fc16276142f74b9a50102a2e855942f7e2593c25 /src/model/eval.rs | |
| parent | f70cea508cd30fa40770ea989fe2a19e715a357b (diff) | |
Numbering functions
Diffstat (limited to 'src/model/eval.rs')
| -rw-r--r-- | src/model/eval.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/model/eval.rs b/src/model/eval.rs index ab89f9c2..e9134114 100644 --- a/src/model/eval.rs +++ b/src/model/eval.rs @@ -563,7 +563,11 @@ impl Eval for ast::Ident { type Output = Value; fn eval(&self, vm: &mut Vm) -> SourceResult<Self::Output> { - vm.scopes.get(self).cloned().at(self.span()) + let value = vm.scopes.get(self).cloned().at(self.span())?; + Ok(match value { + Value::Func(func) => Value::Func(func.spanned(self.span())), + value => value, + }) } } @@ -912,15 +916,17 @@ impl Eval for ast::Closure { } } - // Define the actual function. - Ok(Value::Func(Func::from_closure(Closure { + // Define the closure function. + let closure = Closure { location: vm.location, name, captured, params, sink, body: self.body(), - }))) + }; + + Ok(Value::Func(Func::from_closure(closure, self.span()))) } } |
