Warn if not enough args passed

This commit is contained in:
Justin Ethier 2020-08-01 18:30:24 -04:00
parent 365b19fca7
commit bbbe9ecd40

View file

@ -1353,6 +1353,19 @@ if (acc) {
((and (app? ast)
(lambda? (app->fun ast))
(equal? 'args:fixed-with-varargs (lambda-formals-type (app->fun ast))))
(let ((lam-min-num-args (lambda-num-args (app->fun ast)))
(num-args (length (app->args ast)))
(ltype (lambda-formals-type (app->fun ast))))
(cond
((< num-args lam-min-num-args)
(error
(string-append
"Not enough arguments passed to anonymous lambda. "
"Expected "
(number->string lam-min-num-args)
" but received "
(number->string num-args))
(app->fun ast)))))
(let* ((fn (app->fun ast))
(formals (lambda->formals fn))
(formals-lis (pair->list formals)) ;; Formals as proper list
@ -1399,8 +1412,7 @@ if (acc) {
"Expected "
(number->string lam-min-num-args)
" but received "
(number->string num-args)
":")
(number->string num-args))
fn))
((and (> num-args lam-min-num-args)
(equal? 'args:fixed ltype))
@ -1410,8 +1422,7 @@ if (acc) {
"Expected "
(number->string lam-min-num-args)
" but received "
(number->string num-args)
":")
(number->string num-args))
fn)))
;; Do conversion
(cps-list (app->args ast)