;;;; 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))
-
-
-
-
-
-
-