Improved evaluator errors

This commit is contained in:
2023-04-10 18:53:35 -07:00
parent 0134bc5c12
commit ad3ae83c66
5 changed files with 40 additions and 19 deletions

View File

@ -1,6 +1,7 @@
use std::collections::VecDeque;
use crate::tokens::Token;
use crate::tokens::EvalError;
use crate::tokens::Operator;
#[derive(Debug)]
@ -65,13 +66,13 @@ impl Function {
}
}
pub fn apply(&self, args: &VecDeque<Token>) -> Result<Token, ()> {
pub fn apply(&self, args: &VecDeque<Token>) -> Result<Token, EvalError> {
if args.len() != 1 {panic!()};
let a = args[0].as_number();
let Token::Number(q) = a else {panic!()};
if !q.unitless() {
return Err(());
return Err(EvalError::IncompatibleUnit);
}
match self {