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