fix error message for applying a non-procedure with keywords

This commit is contained in:
Matthew Flatt 2013-05-07 09:52:44 -04:00
parent d16d5f14f3
commit b11d37ddb3
2 changed files with 20 additions and 7 deletions

View File

@ -1267,7 +1267,7 @@
;; Format arguments:
(apply
string-append
"\n given arguments:"
"\n arguments...:"
(append
(map (lambda (v)
(format "\n ~e" v))
@ -1290,12 +1290,20 @@
" given keyword: ~a"
"~a")
(proc-name p) extra-kw args-str)
(format
(string-append
"application: procedure does not accept keyword arguments\n"
" procedure: ~a"
"~a")
(proc-name p) args-str))
(if (procedure? p)
(format
(string-append
"application: procedure does not accept keyword arguments\n"
" procedure: ~a"
"~a")
(proc-name p) args-str)
(format
(string-append
"application: not a procedure;\n"
" expected a procedure that can be applied to arguments\n"
" given: ~e"
"~a")
p args-str)))
(if missing-kw
(format
(string-append

View File

@ -282,6 +282,11 @@
(try-combos (map add-chaperone procs) values)
(try-combos (map add-chaperone procs) add-chaperone)))
;; ----------------------------------------
;; Check error for non-procedures
(err/rt-test (1 2 3) (lambda (x) (regexp-match? "not a procedure" (exn-message))))
(err/rt-test (1 #:x 2 #:y 3) (lambda (x) (regexp-match? "not a procedure" (exn-message))))
;; ----------------------------------------
;; Check error reporting of `procedure-reduce-keyword-arity'