X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Flambda-list.lisp;h=ed0669f470c7a0b040cf75ec8d0a48c7aab88bba;hb=68cd2db6542fa3442d46b0331ecf8be8f86c09c2;hp=8e4ed6131c1ec409dfb2bf3c99c011f3536fde95;hpb=a4a03827e66f1cad335199660bfe0c57cf5c37c8;p=jscl.git diff --git a/src/lambda-list.lisp b/src/lambda-list.lisp index 8e4ed61..ed0669f 100644 --- a/src/lambda-list.lisp +++ b/src/lambda-list.lisp @@ -18,16 +18,16 @@ ;;;; Lambda list parsing -(defstruct optvar +(def!struct optvar variable initform supplied-p-parameter) -(defstruct keyvar +(def!struct keyvar variable keyword-name initform supplied-p-parameter) -(defstruct auxvar +(def!struct auxvar variable initform) -(defstruct d-lambda-list +(def!struct d-lambda-list wholevar reqvars optvars @@ -283,7 +283,11 @@ (compute-pbindings supplied `(keyword-supplied-p ,keyword ,rest))) (compute-pbindings variable `(if ,supplied (keyword-lookup ,keyword ,rest) - ,(keyvar-initform keyvar)))))))))) + ,(keyvar-initform keyvar))))))) + + ;; Aux variables + (dolist (auxvar (d-lambda-list-auxvars d-ll)) + (compute-pbindings (auxvar-variable auxvar) (auxvar-initform auxvar)))))) ;; Macroexpansion. Compute bindings and generate code for them ;; and some necessary checking. @@ -297,10 +301,3 @@ #+jscl (defmacro destructuring-bind (lambda-list expression &body body) `(!destructuring-bind ,lambda-list ,expression ,@body)) - - - - - - -