misc: grammar(?)
This commit is contained in:
parent
2e19a44c0a
commit
c53bb68b13
2 changed files with 5 additions and 3 deletions
|
@ -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")]
|
||||
|
|
|
@ -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,
|
||||
));
|
||||
|
|
Loading…
Reference in a new issue