about summary refs log blame commit diff
path: root/users/tazjin/rlox/src/errors.rs
blob: 484b06bdf6ab1a080f21bf0e2fd49d147c7f6d68 (plain) (tree)
1
2
3
4
5
6
7
8
9


                         
                       
                    
                               
                      
                         
                         
                                
                      

                              
                                    
                         







                        

                                                           
 
#[derive(Debug)]
pub enum ErrorKind {
    UnexpectedChar(char),
    UnterminatedString,
    UnmatchedParens,
    ExpectedExpression(String),
    ExpectedSemicolon,
    ExpectedClosingBrace,
    ExpectedVariableName,
    ExpectedToken(&'static str),
    TypeError(String),
    UndefinedVariable(String),
    InternalError(String),
    InvalidAssignmentTarget(String),
    RuntimeError(String),
}

#[derive(Debug)]
pub struct Error {
    pub line: usize,
    pub kind: ErrorKind,
}

pub fn report(err: &Error) {
    eprintln!("[line {}] Error: {:?}", err.line, err.kind);
}