diff --git a/src/CHANGELOG b/src/CHANGELOG index 660706bcf..a796cf79c 100755 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -51,6 +51,8 @@ ECL 10.5.1: one in which missing components are replaced by the original ones, as in '(("HM:HOME;*.*.*" "/home/user/"))) + - Reduced the clutter generated by SETF expansions. + * Visible changes: - "fasb" is now a valid FASL file type, accepted by ECL even in absence of diff --git a/src/lsp/setf.lsp b/src/lsp/setf.lsp index 6fe6f48d3..eec27e934 100644 --- a/src/lsp/setf.lsp +++ b/src/lsp/setf.lsp @@ -299,7 +299,16 @@ Does not check if the third gang is a single-element list." (multiple-value-bind (vars vals stores store-form access-form) (get-setf-expansion place env) (declare (ignore access-form)) - (cond ((and (consp place) + (cond ((and (null vars) (null vals) + (eq access-form place) + (= (length stores) 1) + (listp store-form) + (= (length store-form) 3) + (eq (first store-form) 'setq) + (eq (second store-form) place) + (eq (third store-form) (first stores))) + (list 'setq place newvalue)) + ((and (consp place) (let* ((name (first place)) (inverse (get-sysprop name 'setf-update-fn))) (and inverse