X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Flocall.lisp;h=f8211b797dd77d2cacd3dea719cf08f4bf07e3af;hb=0e35b321b97477bcfedaa1a5aed1fa87d635d262;hp=71a65dc6918cb7ae15a72403a3b4445e828681dc;hpb=bea5b384106a6734a4b280a76e8ebdd4d51b5323;p=sbcl.git diff --git a/src/compiler/locall.lisp b/src/compiler/locall.lisp index 71a65dc..f8211b7 100644 --- a/src/compiler/locall.lisp +++ b/src/compiler/locall.lisp @@ -648,7 +648,6 @@ (let ((name (lvar-value lvar)) (dummy (first temp)) (val (second temp))) - ;; FIXME: check whether KEY was supplied earlier (when (and (eq name :allow-other-keys) (not allow-found)) (let ((val (second key))) (cond ((constant-lvar-p val) @@ -665,9 +664,11 @@ (setq loser (list name))))) (let ((info (lambda-var-arg-info var))) (when (eq (arg-info-key info) name) - (ignores dummy) - (supplied (cons var val)) - (return))))))) + (ignores dummy) + (if (member var (supplied) :key #'car) + (ignores val) + (supplied (cons var val))) + (return))))))) (when (and loser (not (optional-dispatch-allowp fun)) (not allowp)) (compiler-warn "function called with unknown argument keyword ~S"