diff --git a/src/model/array.rs b/src/model/array.rs index be35c651c..12abac4ee 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 { + 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 5da64fa2f..c0b636694 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 2fea86327..550d928aa 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))