fix argument validation messages

This commit is contained in:
Pekka Laiho 2020-06-03 19:39:11 +07:00
parent 0f64d24074
commit e1298ba5ec

View File

@ -27,17 +27,15 @@ class CoreFunc extends Func
private function validateArgs(int $count)
{
if ($this->minArgs >= 0 && $count < $this->minArgs) {
if ($this->minArgs == $this->maxArgs) {
throw new MadLispException(sprintf("%s requires exactly %s argument%s", $this->name, $this->minArgs,
$this->minArgs == 1 ? '' : 's'));
} else {
throw new MadLispException(sprintf("%s requires at least %s argument%s", $this->name, $this->minArgs,
$this->minArgs == 1 ? '' : 's'));
}
if ($this->minArgs == $this->maxArgs && $count != $this->minArgs) {
throw new MadLispException(sprintf("%s requires exactly %s argument%s", $this->name, $this->minArgs,
$this->minArgs == 1 ? '' : 's'));
} elseif ($count < $this->minArgs) {
throw new MadLispException(sprintf("%s requires at least %s argument%s", $this->name, $this->minArgs,
$this->minArgs == 1 ? '' : 's'));
} elseif ($this->maxArgs >= 0 && $count > $this->maxArgs) {
throw new MadLispException(sprintf("%s requires at most %s argument%s", $this->name, $this->maxArgs,
$this->maxArgs == 1 ? '' : 's'));
throw new MadLispException(sprintf("%s requires at most %s argument%s", $this->name, $this->maxArgs,
$this->maxArgs == 1 ? '' : 's'));
}
}
}