From 38fc6c8e6791a88779f1ef8dd790811e74222644 Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Tue, 1 Sep 2009 15:08:06 +0000 Subject: [PATCH] fixed PR 10418 (keyword args in procedure contracts) svn: r15847 --- collects/scheme/private/contract-arrow.ss | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/collects/scheme/private/contract-arrow.ss b/collects/scheme/private/contract-arrow.ss index 74408bc4a8..45cc6460c0 100644 --- a/collects/scheme/private/contract-arrow.ss +++ b/collects/scheme/private/contract-arrow.ss @@ -1463,7 +1463,13 @@ v4 todo: (define (keywords-match mandatory-kwds optional-kwds val) (let-values ([(proc-mandatory proc-all) (procedure-keywords val)]) - (and (equal? proc-mandatory mandatory-kwds) + (and ;; proc accepts all ctc's mandatory keywords + (andmap (λ (kwd) (member kwd proc-all)) + mandatory-kwds) + ;; proc's mandatory keywords are still mandatory in ctc + (andmap (λ (kwd) (member kwd mandatory-kwds)) + proc-mandatory) + ;; proc accepts (but does not require) ctc's optional keywords (andmap (λ (kwd) (and (member kwd proc-all) (not (member kwd proc-mandatory)))) optional-kwds))))