From 5920a9f2365bc9ae2e6d5f46888621fa44cbb56e Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Thu, 14 May 2026 20:36:15 +0200 Subject: [PATCH] Error returning --- parser/src/lib.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/parser/src/lib.rs b/parser/src/lib.rs index 7bd2875..d85211d 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -14,13 +14,18 @@ pub enum ParseError<'a> { PreAst(pest::error::Error), Ast { span: pest::Span<'a>, - error_code: i32, + error_code: ErrorCode, error_message: String, }, } type ParseResult<'a, T> = Result>; +#[derive(Debug, Clone)] +pub enum ErrorCode { + InvalidStatement = 200, +} + pub fn parse<'a>(source: &'a str) -> ParseResult<'a, Vec> { let mut pairs = MistParser::parse(Rule::program, source)?; @@ -611,9 +616,11 @@ impl<'a> TryFrom> for Statement { ), Rule::unexpected_statement => { - let pos = pair.as_span().start_pos().line_col(); - - panic!("({}:{}) Invalid Statement: {}", pos.0, pos.1, pair.as_str()) + return Err(ParseError::Ast { + span: pair.as_span(), + error_code: ErrorCode::InvalidStatement, + error_message: "Invalid Statement".to_string(), + }); } _ => unimplemented!("{rule:#?}"),