summaryrefslogtreecommitdiff
path: root/src/eval/mod.rs
diff options
context:
space:
mode:
authorMichael Lohr <michael@lohr.dev>2023-05-03 12:34:35 +0200
committerGitHub <noreply@github.com>2023-05-03 12:34:35 +0200
commitffad8516af0b91121dc0761c8026e0a12939a7d4 (patch)
treeada5c6b5510b5f509997ccf5308a9cafc8618990 /src/eval/mod.rs
parentca8462642a96ec282afeb0774b6d5daf546ac236 (diff)
Implement default values for at() (#995)
Diffstat (limited to 'src/eval/mod.rs')
-rw-r--r--src/eval/mod.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs
index fe1fac3b..b430b400 100644
--- a/src/eval/mod.rs
+++ b/src/eval/mod.rs
@@ -1255,7 +1255,7 @@ impl ast::Pattern {
for p in destruct.bindings() {
match p {
ast::DestructuringKind::Normal(expr) => {
- let Ok(v) = value.at(i) else {
+ let Ok(v) = value.at(i, None) else {
bail!(expr.span(), "not enough elements to destructure");
};
f(vm, expr, v.clone())?;
@@ -1310,17 +1310,17 @@ impl ast::Pattern {
for p in destruct.bindings() {
match p {
ast::DestructuringKind::Normal(ast::Expr::Ident(ident)) => {
- let Ok(v) = value.at(&ident) else {
- bail!(ident.span(), "destructuring key not found in dictionary");
- };
+ let Ok(v) = value.at(&ident, None) else {
+ bail!(ident.span(), "destructuring key not found in dictionary");
+ };
f(vm, ast::Expr::Ident(ident.clone()), v.clone())?;
used.insert(ident.take());
}
ast::DestructuringKind::Sink(spread) => sink = spread.expr(),
ast::DestructuringKind::Named(named) => {
- let Ok(v) = value.at(named.name().as_str()) else {
- bail!(named.name().span(), "destructuring key not found in dictionary");
- };
+ let Ok(v) = value.at(named.name().as_str(), None) else {
+ bail!(named.name().span(), "destructuring key not found in dictionary");
+ };
f(vm, named.expr(), v.clone())?;
used.insert(named.name().take());
}