diff --git a/collects/racket/private/kw.rkt b/collects/racket/private/kw.rkt index 23dbc9d9dd..1369f09117 100644 --- a/collects/racket/private/kw.rkt +++ b/collects/racket/private/kw.rkt @@ -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 diff --git a/collects/tests/racket/procs.rktl b/collects/tests/racket/procs.rktl index 1a05e1fd01..4c2602733a 100644 --- a/collects/tests/racket/procs.rktl +++ b/collects/tests/racket/procs.rktl @@ -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'