From 53ef242889f11554470a11f7c97a565136678e5a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 30 Sep 2020 07:14:24 -0600 Subject: [PATCH] fix arity exception for a keyword procedure Closes #3416 --- pkgs/racket-test-core/tests/racket/procs.rktl | 10 ++++++++++ racket/collects/racket/private/kw.rkt | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/procs.rktl b/pkgs/racket-test-core/tests/racket/procs.rktl index e28f31aea6..8f56cf64bb 100644 --- a/pkgs/racket-test-core/tests/racket/procs.rktl +++ b/pkgs/racket-test-core/tests/racket/procs.rktl @@ -773,6 +773,16 @@ (test (list the-a the-b) the-b) (test 0 procedure-arity the-b)) +;; ---------------------------------------- +;; Make sure wrong number with keywords is an arity exception: + +(let () + (define (hello a b #:key key) (display a)) + (test #t + exn:fail:contract:arity? + (with-handlers ([values values]) + (hello 1 #:key 'hi)))) + ;; ---------------------------------------- (report-errs) diff --git a/racket/collects/racket/private/kw.rkt b/racket/collects/racket/private/kw.rkt index 555b5dcfd9..0ebc8257ea 100644 --- a/racket/collects/racket/private/kw.rkt +++ b/racket/collects/racket/private/kw.rkt @@ -1578,7 +1578,7 @@ (object-name p) p))]) (raise - (exn:fail:contract + ((if (or extra-kw missing-kw) exn:fail:contract exn:fail:contract:arity) (if extra-kw (if (keyword-procedure? p) (format