(thanks to Svein Ove Aas)
* bug fix: Unicode symbols are correctly printed in LDB backtraces
(thanks to David Lichteblau)
+ * bug fix: local bindings shadow global symbol macros for
+ macroexpansion. (reported by Matthew D Swank on comp.lang.lisp)
* optimization: non-open coded uses of numeric comparison operators
(e.g. >) no longer cons when called with more than one parameter
on platforms supporting dynamic-extent allocation.
(cond ((and (consp local-def)
(eq (car local-def) 'macro))
(values (cdr local-def) t))
+ (local-def
+ (values form nil))
((eq (info :variable :kind form) :macro)
(values (info :variable :macro-expansion form) t))
(t
--- /dev/null
+;;;; This file is for macroexpander tests which have side effects
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; While most of SBCL is derived from the CMU CL system, the test
+;;;; files (like this one) were written from scratch after the fork
+;;;; from CMU CL.
+;;;;
+;;;; This software is in the public domain and is provided with
+;;;; absolutely no warranty. See the COPYING and CREDITS files for
+;;;; more information.
+
+;;; From Matthew Swank on cll 2005-10-06
+
+(defmacro defglobal (name &optional value)
+ (let ((internal (gensym)))
+ `(progn
+ (defparameter ,internal ,value)
+ (define-symbol-macro ,name ,internal))))
+
+(defglobal glob)
+
+(assert (= (let ((glob 4)) glob)))
+(assert (null glob))
+(assert (equal (let ((glob nil)) (setf glob (cons 'foo glob)) glob) '(foo)))
+(assert (null glob))
+(assert (equal (let ((glob nil)) (push 'foo glob) glob) '(foo)))
+(assert (null glob))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.5.27"
+"0.9.5.29"