Skip to main content

just_engine/runner/ds/
error.rs

1use crate::runner::ds::value::JsValue;
2
3#[derive(Debug, Clone)]
4pub enum JErrorType {
5    ReferenceError(String),
6    TypeError(String),
7    RangeError(String),
8    SyntaxError(String),
9    /// Special "error" type for generator yield (not a real error)
10    YieldValue(JsValue),
11}
12impl JErrorType {
13    pub fn new_copy(other: &Self) -> Self {
14        match other {
15            JErrorType::ReferenceError(m) => JErrorType::ReferenceError(m.to_string()),
16            JErrorType::TypeError(m) => JErrorType::TypeError(m.to_string()),
17            JErrorType::RangeError(m) => JErrorType::RangeError(m.to_string()),
18            JErrorType::SyntaxError(m) => JErrorType::SyntaxError(m.to_string()),
19            JErrorType::YieldValue(v) => JErrorType::YieldValue(v.clone()),
20        }
21    }
22    pub fn to_string(&self) -> String {
23        match self {
24            JErrorType::ReferenceError(m) => format!("Uncaught reference error: {}.", m),
25            JErrorType::TypeError(m) => format!("Uncaught type error: {}.", m),
26            JErrorType::RangeError(m) => format!("Uncaught range error: {}.", m),
27            JErrorType::SyntaxError(m) => format!("Uncaught syntax error: {}.", m),
28            JErrorType::YieldValue(_) => "Yield outside of generator".to_string(),
29        }
30    }
31}