diff --git a/collects/scheme/private/kw.ss b/collects/scheme/private/kw.ss index 1068859dbe..ce23b17ef7 100644 --- a/collects/scheme/private/kw.ss +++ b/collects/scheme/private/kw.ss @@ -283,168 +283,170 @@ (define-syntaxes (new-lambda new-λ) (let ([new-lambda (lambda (stx) - (syntax-case stx () - [(_ args body1 body ...) - (if (simple-args? #'args) - ;; Use plain old `lambda': - (syntax/loc stx - (lambda args body1 body ...)) - ;; Handle keyword or optional arguments: - (with-syntax ([((plain-id ...) - (opt-id ...) - ([id opt-expr kind] ...) - ([kw kw-id kw-req] ...) - need-kw - rest) - (parse-formals stx #'args)]) - (let ([dup-id (check-duplicate-identifier (syntax->list #'(id ... . rest)))]) - (when dup-id - (raise-syntax-error - #f - "duplicate argument identifier" - stx - dup-id))) - (let* ([kws (syntax->list #'(kw ...))] - [opts (syntax->list #'(opt-id ...))] - [ids (syntax->list #'(id ...))] - [plain-ids (syntax->list #'(plain-id ...))] - [kw-reqs (syntax->list #'(kw-req ...))] - [kw-args (generate-temporaries kws)] ; to hold supplied value - [kw-arg?s (generate-temporaries kws)] ; to indicated whether it was supplied - [opt-args (generate-temporaries opts)] ; supplied value - [opt-arg?s (generate-temporaries opts)] ; whether supplied - [needed-kws (sort (syntax->list #'need-kw) - (lambda (a b) (keywordlist #'(id ... . rest)))]) + (when dup-id + (raise-syntax-error + #f + "duplicate argument identifier" + stx + dup-id))) + (let* ([kws (syntax->list #'(kw ...))] + [opts (syntax->list #'(opt-id ...))] + [ids (syntax->list #'(id ...))] + [plain-ids (syntax->list #'(plain-id ...))] + [kw-reqs (syntax->list #'(kw-req ...))] + [kw-args (generate-temporaries kws)] ; to hold supplied value + [kw-arg?s (generate-temporaries kws)] ; to indicated whether it was supplied + [opt-args (generate-temporaries opts)] ; supplied value + [opt-arg?s (generate-temporaries opts)] ; whether supplied + [needed-kws (sort (syntax->list #'need-kw) + (lambda (a b) (keyword