Fixes lp#924276.
(lp#959687)
* bug fix: (SETF (FIND-CLASS X) NIL) removed proper name of the underlying
classoid even if X was not the proper name of the class. (lp#941102)
+ * bug fix: declaration leakage between lexical environments due to careless
+ use of NCONC in MAKE-LEXENV. (lp#924276)
* documentation:
** improved docstrings: REPLACE (lp#965592)
(reoptimize-lvar prev)))
\f
;;; Return a new LEXENV just like DEFAULT except for the specified
-;;; slot values. Values for the alist slots are NCONCed to the
+;;; slot values. Values for the alist slots are APPENDed to the
;;; beginning of the current value, rather than replacing it entirely.
(defun make-lexenv (&key (default *lexenv*)
funs vars blocks tags
(macrolet ((frob (var slot)
`(let ((old (,slot default)))
(if ,var
- (nconc ,var old)
+ (append ,var old)
old))))
(internal-make-lexenv
(frob funs lexenv-funs)
:somethign-else))))
(assert (and warn fail))
(assert (not (ignore-errors (funcall fun t))))))
+
+(with-test (:name :bug-924276)
+ (assert (eq :style-warning
+ (handler-case
+ (compile nil `(lambda (a)
+ (cons a (symbol-macrolet ((b 1))
+ (declare (ignorable a))
+ :c))))
+ (style-warning ()
+ :style-warning)))))