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}