| 
1 | 1 | //! Error and result types returned from the library functions.  | 
2 | 2 | 
  | 
3 |  | -use std::{error::Error as ErrorTrait, ffi::NulError, fmt::Display};  | 
 | 3 | +use std::{error::Error as ErrorTrait, ffi::NulError, fmt::Display, rc::Rc};  | 
4 | 4 | 
 
  | 
5 | 5 | use crate::php::{  | 
6 | 6 |     enums::DataType,  | 
7 | 7 |     exceptions::PhpException,  | 
8 | 8 |     flags::{ClassFlags, ZvalTypeFlags},  | 
 | 9 | +    types::object::ZendObject,  | 
9 | 10 | };  | 
10 | 11 | 
 
  | 
11 | 12 | /// The main result type which is passed by the library.  | 
12 | 13 | pub type Result<T> = std::result::Result<T, Error>;  | 
13 | 14 | 
 
  | 
14 | 15 | /// The main error type which is passed by the library inside the custom  | 
15 | 16 | /// [`Result`] type.  | 
16 |  | -#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]  | 
 | 17 | +#[derive(Debug, Clone)]  | 
17 | 18 | #[non_exhaustive]  | 
18 | 19 | pub enum Error {  | 
19 | 20 |     /// An incorrect number of arguments was given to a PHP function.  | 
@@ -50,6 +51,8 @@ pub enum Error {  | 
50 | 51 |     InvalidException(ClassFlags),  | 
51 | 52 |     /// Converting integer arguments resulted in an overflow.  | 
52 | 53 |     IntegerOverflow,  | 
 | 54 | +    CompileFailed,  | 
 | 55 | +    UncaughtException(Rc<Box<ZendObject>>),  | 
53 | 56 | }  | 
54 | 57 | 
 
  | 
55 | 58 | impl Display for Error {  | 
@@ -83,6 +86,8 @@ impl Display for Error {  | 
83 | 86 |             Error::IntegerOverflow => {  | 
84 | 87 |                 write!(f, "Converting integer arguments resulted in an overflow.")  | 
85 | 88 |             }  | 
 | 89 | +            Error::CompileFailed => write!(f, "Syntax error."),  | 
 | 90 | +            Error::UncaughtException(exception) => write!(f, "Uncaught Exception: {:?}", exception),  | 
86 | 91 |         }  | 
87 | 92 |     }  | 
88 | 93 | }  | 
 | 
0 commit comments