diff options
| author | Marmare314 <49279081+Marmare314@users.noreply.github.com> | 2023-04-13 16:07:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-13 16:07:58 +0200 |
| commit | 0105eb7382801b56781308ea94b3aeffa6fd867f (patch) | |
| tree | 9374989fb8999f4d1ca1362c8b96679cc61be9e0 /src/eval/mod.rs | |
| parent | d1cd814ef8149cbac6e59c81e074aa59c930eed3 (diff) | |
Fix function sinks (#638)
Diffstat (limited to 'src/eval/mod.rs')
| -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 5a450481..1b3c6ea3 100644 --- a/src/eval/mod.rs +++ b/src/eval/mod.rs @@ -1149,24 +1149,17 @@ impl Eval for ast::Closure { visitor.finish() }; - let mut params = Vec::new(); - let mut sink = None; - // Collect parameters and an optional sink parameter. + let mut params = Vec::new(); for param in self.params().children() { match param { ast::Param::Pos(name) => { - params.push((name, None)); + params.push(Param::Pos(name)); } ast::Param::Named(named) => { - params.push((named.name(), Some(named.expr().eval(vm)?))); - } - ast::Param::Sink(name) => { - if sink.is_some() { - bail!(name.span(), "only one argument sink is allowed"); - } - sink = Some(name); + params.push(Param::Named(named.name(), named.expr().eval(vm)?)); } + ast::Param::Sink(name) => params.push(Param::Sink(name)), } } @@ -1176,7 +1169,6 @@ impl Eval for ast::Closure { name, captured, params, - sink, body: self.body(), }; |
