X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdestructuring-bind.lisp;h=4ea6b48f7c2f12ebef816a28ff8d681642bef2f9;hb=8bcffb407835ff680d5ee2ba1f7ce97839bbae3e;hp=58bc4c0bae99ec6d24435f33571dd6993d3373f9;hpb=8886298f2c0e50e595cf481c426b6331ab898a23;p=sbcl.git diff --git a/src/code/destructuring-bind.lisp b/src/code/destructuring-bind.lisp index 58bc4c0..4ea6b48 100644 --- a/src/code/destructuring-bind.lisp +++ b/src/code/destructuring-bind.lisp @@ -9,15 +9,16 @@ (in-package "SB!IMPL") -(defmacro-mundanely destructuring-bind (lambda-list arg-list &rest body) +(defmacro-mundanely destructuring-bind (lambda-list expression &rest body) #!+sb-doc - "Bind the variables in LAMBDA-LIST to the contents of ARG-LIST." - (let ((arg-list-name (gensym "ARG-LIST-"))) + "Bind the variables in LAMBDA-LIST to the corresponding values in the +tree structure resulting from the evaluation of EXPRESSION." + (let ((whole-name (gensym "WHOLE"))) (multiple-value-bind (body local-decls) - (parse-defmacro lambda-list arg-list-name body nil 'destructuring-bind + (parse-defmacro lambda-list whole-name body nil 'destructuring-bind :anonymousp t :doc-string-allowed nil :wrap-block nil) - `(let ((,arg-list-name ,arg-list)) + `(let ((,whole-name ,expression)) ,@local-decls ,body))))