umpl/
error.rs

1use crate::cli::EASY_MODE;
2use std::{fmt::Display, process::exit};
3
4pub fn error<T: Display>(line: i32, message: T) -> ! {
5    let where_ = "";
6    let message = message.to_string();
7    let mut message = message.as_str();
8    unsafe {
9        if EASY_MODE {
10        } else {
11            message = "Segmentation fault (core dumped)";
12        }
13    }
14    if message.is_empty() {
15        message = "Segmentation fault (core dumped)";
16    }
17    eprintln!("[line: {line}], Error{where_}: {message}");
18    exit(1);
19}
20
21#[allow(clippy::module_name_repetitions)]
22pub fn arg_error<T: Display>(
23    num_args: u32,
24    given_args: u32,
25    function: T,
26    at_least: bool,
27    line: i32,
28) {
29    if at_least {
30        if num_args < given_args {
31            error(
32                line,
33                format!("{function} requires at least {num_args} arguments"),
34            );
35        }
36    } else if num_args != given_args {
37        error(line, format!("{function} requires {num_args} arguments"));
38    }
39}