input: better dsl error handling

This commit is contained in:
🪞👃🪞 2025-05-14 22:16:52 +03:00
parent 8bfd1a23a1
commit 496a9202d5
2 changed files with 6 additions and 6 deletions

View file

@ -51,19 +51,19 @@ impl<'state, S, C: DslCommand<'state, S>, I: DslInput> KeyMap<'state, S, C, I> f
while let Some(next) = iter.next() { while let Some(next) = iter.next() {
match next { match next {
Token { value: Value::Exp(0, exp_iter), .. } => { Token { value: Value::Exp(0, exp_iter), .. } => {
let mut exp_iter = exp_iter.clone(); let mut e = exp_iter.clone();
match exp_iter.next() { match e.next() {
Some(Token { value: Value::Sym(binding), .. }) => { Some(Token { value: Value::Sym(binding), .. }) => {
if input.matches_dsl(binding) { if input.matches_dsl(binding) {
if let Some(command) = C::try_from_expr(state, &mut exp_iter) { if let Some(command) = C::try_from_expr(state, &mut e) {
return Some(command) return Some(command)
} }
} }
}, },
_ => panic!("invalid config (expected symbol)") _ => panic!("invalid config (expected symbol, got: {exp_iter:?})")
} }
}, },
_ => panic!("invalid config (expected expression)") _ => panic!("invalid config (expected expression, got: {next:?})")
} }
} }
None None

View file

@ -54,7 +54,7 @@ pub trait ViewContext<'state, E: Output + 'state>: Send + Sync
match value { match value {
Value::Sym(_) => self.get_content_sym(value), Value::Sym(_) => self.get_content_sym(value),
Value::Exp(_, _) => self.get_content_exp(value), Value::Exp(_, _) => self.get_content_exp(value),
_ => panic!("only :symbols and (expressions) accepted here") _ => panic!("only :symbols and (expressions) accepted here, got: {value:?}")
} }
} }
fn get_content_sym <'source: 'state> (&'state self, value: &Value<'source>) fn get_content_sym <'source: 'state> (&'state self, value: &Value<'source>)