From ce4286c7226b6b768cc2525cb55d9c95e1a941b6 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 12 Aug 2011 07:23:59 -0600 Subject: [PATCH] fix bug in keyword-argument calls Closes PR 12104 --- collects/racket/private/kw.rkt | 4 +++- collects/tests/racket/procs.rktl | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/collects/racket/private/kw.rkt b/collects/racket/private/kw.rkt index baba304f3b..ea9e0fe361 100644 --- a/collects/racket/private/kw.rkt +++ b/collects/racket/private/kw.rkt @@ -1061,7 +1061,9 @@ #,@(if rest? #`((list #,@(list-tail args (min (length args) (+ n-req n-opt))))) null)) - #,(quasisyntax/loc stx (#%app #,wrap-id . #,args)))))))) + #,(if lifted? + orig + (quasisyntax/loc stx (#%app #,wrap-id . #,args))))))))) orig)))) (datum->syntax stx (cons wrap-id #'(arg ...)) stx stx)))] [_ wrap-id])))) diff --git a/collects/tests/racket/procs.rktl b/collects/tests/racket/procs.rktl index 79cf9a42c4..4eff6c8c32 100644 --- a/collects/tests/racket/procs.rktl +++ b/collects/tests/racket/procs.rktl @@ -278,6 +278,11 @@ (set! f (lambda (#:y y) (box y))) (test (box 8) (lambda () (f #:y 8)))) +(let () + (define (f #:x [x 1]) x) + (test 7 (lambda () (f #:x 7))) + (set! f #f)) + ;; ---------------------------------------- (report-errs)