diff options
Diffstat (limited to 'users/tazjin/rlox/src/bytecode/errors.rs')
-rw-r--r-- | users/tazjin/rlox/src/bytecode/errors.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/users/tazjin/rlox/src/bytecode/errors.rs b/users/tazjin/rlox/src/bytecode/errors.rs index c7871bc384f2..513708df7e85 100644 --- a/users/tazjin/rlox/src/bytecode/errors.rs +++ b/users/tazjin/rlox/src/bytecode/errors.rs @@ -1,15 +1,18 @@ +use crate::scanner::ScannerError; + use std::fmt; #[derive(Debug)] pub enum ErrorKind { - // CompileError, - // RuntimeError, + UnexpectedChar(char), + UnterminatedString, InternalError(&'static str), } #[derive(Debug)] pub struct Error { pub kind: ErrorKind, + pub line: usize, } impl fmt::Display for Error { @@ -18,4 +21,20 @@ impl fmt::Display for Error { } } +impl From<ScannerError> for Error { + fn from(err: ScannerError) -> Self { + match err { + ScannerError::UnexpectedChar { line, unexpected } => Error { + line, + kind: ErrorKind::UnexpectedChar(unexpected), + }, + + ScannerError::UnterminatedString { line } => Error { + line, + kind: ErrorKind::UnterminatedString, + }, + } + } +} + pub type LoxResult<T> = Result<T, Error>; |