summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/model/array.rs5
-rw-r--r--src/model/methods.rs2
-rw-r--r--tests/typ/compiler/array.typ2
3 files changed, 4 insertions, 5 deletions
diff --git a/src/model/array.rs b/src/model/array.rs
index be35c651..12abac4e 100644
--- a/src/model/array.rs
+++ b/src/model/array.rs
@@ -84,9 +84,8 @@ impl Array {
}
/// Remove the last value in the array.
- pub fn pop(&mut self) -> StrResult<()> {
- Arc::make_mut(&mut self.0).pop().ok_or_else(array_is_empty)?;
- Ok(())
+ pub fn pop(&mut self) -> StrResult<Value> {
+ Arc::make_mut(&mut self.0).pop().ok_or_else(array_is_empty)
}
/// Insert a value at the specified index.
diff --git a/src/model/methods.rs b/src/model/methods.rs
index 5da64fa2..c0b63669 100644
--- a/src/model/methods.rs
+++ b/src/model/methods.rs
@@ -144,7 +144,7 @@ pub fn call_mut(
match value {
Value::Array(array) => match method {
"push" => array.push(args.expect("value")?),
- "pop" => array.pop().at(span)?,
+ "pop" => output = array.pop().at(span)?,
"insert" => {
array.insert(args.expect("index")?, args.expect("value")?).at(span)?
}
diff --git a/tests/typ/compiler/array.typ b/tests/typ/compiler/array.typ
index 2fea8632..550d928a 100644
--- a/tests/typ/compiler/array.typ
+++ b/tests/typ/compiler/array.typ
@@ -100,7 +100,7 @@
// Test the `push` and `pop` methods.
#{
let tasks = (a: (1, 2, 3), b: (4, 5, 6))
- tasks.at("a").pop()
+ test(tasks.at("a").pop(), 3)
tasks.b.push(7)
test(tasks.a, (1, 2))
test(tasks.at("b"), (4, 5, 6, 7))