From d9be2a705f6e04b3f321bc9bbe0d498179946226 Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Mon, 18 May 1992 17:21:18 +0000 Subject: [PATCH] Fixed a bug in WALK-ARGLIST where it would ignore the rest of the current arglist if the current arg destructured. --- pcl/walk.lisp | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/pcl/walk.lisp b/pcl/walk.lisp index 6766a9628..cdf9ea742 100644 --- a/pcl/walk.lisp +++ b/pcl/walk.lisp @@ -1534,22 +1534,23 @@ (not (member arg lambda-list-keywords)))))) ((consp arg) - (prog1 (if destructuringp - (walk-arglist arg context env destructuringp) - (recons arglist - (relist* arg - (car arg) - (walk-form-internal (cadr arg) :eval env) - (cddr arg)) - (walk-arglist (cdr arglist) context env nil))) - (if (symbolp (car arg)) - (note-lexical-binding (car arg) env) - (note-lexical-binding (cadar arg) env)) - (or (null (cddr arg)) - (not (symbolp (caddr arg))) - (note-lexical-binding (caddr arg) env)))) - (t - (error "Can't understand something in the arglist ~S" arglist)))) + (prog1 + (recons arglist + (if destructuringp + (walk-arglist arg context env destructuringp) + (relist* arg + (car arg) + (walk-form-internal (cadr arg) :eval env) + (cddr arg))) + (walk-arglist (cdr arglist) context env nil)) + (if (symbolp (car arg)) + (note-lexical-binding (car arg) env) + (note-lexical-binding (cadar arg) env)) + (or (null (cddr arg)) + (not (symbolp (caddr arg))) + (note-lexical-binding (caddr arg) env)))) + (t + (error "Can't understand something in the arglist ~S" arglist)))) (defun walk-let (form context env) (walk-let/let* form context env nil)) -- GitLab