diff --git a/src/builtins/list.rs b/src/builtins/list.rs index d2d430f..18f812a 100644 --- a/src/builtins/list.rs +++ b/src/builtins/list.rs @@ -49,8 +49,12 @@ pub(crate) fn list_functions() -> FunctionMap { fn remove(mut self_val: RefMut, mut args: Vec) -> Result { if let Value::List(list) = self_val.deref_mut() { - list.remove(args.remove(0).cast_usize()?); - Ok(Value::Void) + let index= args.remove(0).cast_usize()?; + if index >= list.len() { + return Err(RuntimeError::IndexOutOfBounds(index, list.len())); + } + list.remove(index); + Ok(self_val.deref().clone()) } else { Err(expected_a_list()) } @@ -59,7 +63,7 @@ fn remove(mut self_val: RefMut, mut args: Vec) -> Result, mut args: Vec) -> Result { if let Value::List(list) = self_val.deref_mut() { list.push(args.remove(0)); - Ok(Value::Void) + Ok(self_val.deref().clone()) } else { Err(expected_a_list()) }