1
0

28 lines
636 B
Rust
Raw Normal View History

use std::panic;
use smallvec::SmallVec;
2024-12-17 03:22:44 -05:00
use crate::{vm::Record, DustString, NativeFunctionError, Value};
pub fn panic(
2024-12-17 03:22:44 -05:00
record: &mut Record,
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-17 03:22:44 -05:00
let string = value_ref.display(record);
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");
}
}