0.8.9.12:
authorChristophe Rhodes <csr21@cam.ac.uk>
Tue, 30 Mar 2004 20:21:11 +0000 (20:21 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Tue, 30 Mar 2004 20:21:11 +0000 (20:21 +0000)
Add basic tests regarding DYNAMIC-EXTENT
... mostly ensure that nothing is broken;
... in future, we'll want to verify that things are in fact being
stack-allocated where applicable.

tests/dynamic-extent.impure.lisp [new file with mode: 0644]
version.lisp-expr

diff --git a/tests/dynamic-extent.impure.lisp b/tests/dynamic-extent.impure.lisp
new file mode 100644 (file)
index 0000000..339759d
--- /dev/null
@@ -0,0 +1,39 @@
+;;;; tests that dynamic-extent functionality works.
+
+;;;; 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.
+
+;;; &REST lists
+(defmacro defun-with-dx (name arglist &body body)
+  `(locally
+     (declare (optimize sb-c::stack-allocate-dynamic-extent))
+     (defun ,name ,arglist
+       ,@body)))
+
+(defun-with-dx dxlength (&rest rest)
+  (declare (dynamic-extent rest))
+  (length rest))
+
+(assert (= (dxlength 1 2 3) 3))
+(assert (= (dxlength t t t t t t) 6))
+(assert (= (dxlength) 0))
+
+(defun callee (list)
+  (destructuring-bind (a b c d e f &rest g) list
+    (+ a b c d e f (length g))))
+
+(defun-with-dx dxcaller (&rest rest)
+  (declare (dynamic-extent rest))
+  (callee rest))
+
+(assert (= (dxcaller 1 2 3 4 5 6 7) 22))
+\f
+(sb-ext:quit :unix-status 104)
\ No newline at end of file
index 2cbb4c4..4ee3c85 100644 (file)
@@ -17,4 +17,4 @@
 ;;; 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.8.9.11"
+"0.8.9.12"