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: ;; Format arguments:
(apply (apply
string-append string-append
"\n given arguments:" "\n arguments...:"
(append (append
(map (lambda (v) (map (lambda (v)
(format "\n ~e" v)) (format "\n ~e" v))
@ -1290,12 +1290,20 @@
" given keyword: ~a" " given keyword: ~a"
"~a") "~a")
(proc-name p) extra-kw args-str) (proc-name p) extra-kw args-str)
(if (procedure? p)
(format (format
(string-append (string-append
"application: procedure does not accept keyword arguments\n" "application: procedure does not accept keyword arguments\n"
" procedure: ~a" " procedure: ~a"
"~a") "~a")
(proc-name p) args-str)) (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 (if missing-kw
(format (format
(string-append (string-append

View File

@ -282,6 +282,11 @@
(try-combos (map add-chaperone procs) values) (try-combos (map add-chaperone procs) values)
(try-combos (map add-chaperone procs) add-chaperone))) (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' ;; Check error reporting of `procedure-reduce-keyword-arity'