1
0

28 lines
612 B
Rust
Raw Normal View History

use std::panic;
use smallvec::SmallVec;
2024-12-14 08:49:02 -05:00
use crate::{DustString, NativeFunctionError, Value, Vm};
pub fn panic(
vm: &Vm,
2024-12-14 08:49:02 -05:00
arguments: SmallVec<[&Value; 4]>,
) -> Result<Option<Value>, NativeFunctionError> {
let mut message: Option<DustString> = None;
for value_ref in arguments {
2024-12-14 16:17:02 -05:00
let string = value_ref.display(vm);
match message {
Some(ref mut message) => message.push_str(&string),
None => message = Some(string),
}
}
2024-12-14 16:17:02 -05:00
if let Some(message) = message {
panic!("{message}");
} else {
panic!("Explicit panic");
}
}