summaryrefslogtreecommitdiff
path: root/src/eval/dict.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-05-25 13:50:33 +0200
committerLaurenz <laurmaedje@gmail.com>2022-05-25 13:59:06 +0200
commitc010cbc17dcbb2f0d6005d21530143bf57cb5871 (patch)
tree937fe79f0c121bcc025480181287fd4a3d0c0f4f /src/eval/dict.rs
parent6935cf8dfefff3d6cf234f077a7d61661fd5ca57 (diff)
Move route from context to VM
Diffstat (limited to 'src/eval/dict.rs')
-rw-r--r--src/eval/dict.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/eval/dict.rs b/src/eval/dict.rs
index 22b73e76..35bd75d5 100644
--- a/src/eval/dict.rs
+++ b/src/eval/dict.rs
@@ -3,12 +3,11 @@ use std::fmt::{self, Debug, Formatter, Write};
use std::ops::{Add, AddAssign};
use std::sync::Arc;
-use super::{Args, Array, Func, Value};
+use super::{Args, Array, Func, Machine, Value};
use crate::diag::{StrResult, TypResult};
use crate::parse::is_ident;
use crate::syntax::Spanned;
use crate::util::{ArcExt, EcoString};
-use crate::Context;
/// Create a new [`Dict`] from key-value pairs.
#[allow(unused_macros)]
@@ -97,14 +96,12 @@ impl Dict {
}
/// Transform each pair in the array with a function.
- pub fn map(&self, ctx: &mut Context, f: Spanned<Func>) -> TypResult<Array> {
+ pub fn map(&self, vm: &mut Machine, f: Spanned<Func>) -> TypResult<Array> {
Ok(self
.iter()
.map(|(key, value)| {
- f.v.call(
- ctx,
- Args::from_values(f.span, [Value::Str(key.clone()), value.clone()]),
- )
+ let args = Args::new(f.span, [Value::Str(key.clone()), value.clone()]);
+ f.v.call(vm, args)
})
.collect::<TypResult<_>>()?)
}