0.9.5.29:
[sbcl.git] / tests / macroexpand.impure.lisp
diff --git a/tests/macroexpand.impure.lisp b/tests/macroexpand.impure.lisp
new file mode 100644 (file)
index 0000000..6f5863d
--- /dev/null
@@ -0,0 +1,29 @@
+;;;; 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))