diff --git a/ansi-tests/random-int-form.lsp b/ansi-tests/random-int-form.lsp index bececfffa5faf3464c9f3fbc02ecc4d858f88de3..138f9331428273f8f8f3a7a345e9e56f802acdd5 100644 --- a/ansi-tests/random-int-form.lsp +++ b/ansi-tests/random-int-form.lsp @@ -803,7 +803,8 @@ (not (rest binding-list)) (not (rest body))) (let ((binding (first binding-list))) - (unless (consp (second binding)) + (unless (or (consp (second binding)) + (has-assignment-to-var (first binding) body)) (funcall try-fn `(let () ,@(subst (second binding) (first binding) body)))))) @@ -812,6 +813,13 @@ (funcall try-fn `(,@(butlast form) ,form2))))))) +(defun has-assignment-to-var (var form) + (when (consp form) + (or (and (member (car form) '(setq setf)) + (eq (cadr form) var)) + (loop for subform in form + thereis (has-assignment-to-var var subform))))) + (defun prune-flet (form try-fn) "Attempt to simplify a FLET form." (declare (function try-fn))