Use def!struct
[jscl.git] / src / lambda-list.lisp
index 8e4ed61..ed0669f 100644 (file)
 
 ;;;; 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
                              (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.
 #+jscl
 (defmacro destructuring-bind (lambda-list expression &body body)
   `(!destructuring-bind ,lambda-list ,expression ,@body))
-
-
-
-
-
-
-