misc: grammar(?)

This commit is contained in:
Roman Godmaire 2024-05-10 18:56:21 -04:00
parent 2e19a44c0a
commit c53bb68b13
2 changed files with 5 additions and 3 deletions

View file

@ -181,7 +181,8 @@ mod test {
#[case("(error \"this failed\")", "error: this failed")]
#[case("(error? (error \"this failed\"))", "true")]
#[case("(error? 69)", "false")]
#[case("(str 1 2 3)", "error: expected 1 args, got 3")]
#[case("(str 1 2 3)", "error: expected 1 arg(s), got 3")]
#[case("(hashmap 1 2 3)", "error: expected 4 arg(s), got 3")]
// Meta
#[case("(eval (list + 1 1))", "2")]
#[case("(apply + (list 1 2 3))", "6")]

View file

@ -1,15 +1,16 @@
// TODO: argument count checking should happen at parse time, not at runtime
#[macro_export]
macro_rules! arg_count {
($expected:expr, $given:expr) => {
if $expected != $given {
return Node::Error(format!("expected {} args, got {}", $expected, $given));
return Node::Error(format!("expected {} arg(s), got {}", $expected, $given));
}
};
(modulo: $modulo:expr, $given:expr) => {
if $given % $modulo != 0 {
return Node::Error(format!(
"expected {} args, got {}",
"expected {} arg(s), got {}",
($given / $modulo) * $modulo + $modulo,
$given,
));