From 1e0911cab5d91a2253141bcdb473035b1e591473 Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Tue, 30 Mar 2004 20:21:11 +0000 Subject: [PATCH] 0.8.9.12: 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 | 39 ++++++++++++++++++++++++++++++++++++++ version.lisp-expr | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tests/dynamic-extent.impure.lisp diff --git a/tests/dynamic-extent.impure.lisp b/tests/dynamic-extent.impure.lisp new file mode 100644 index 0000000..339759d --- /dev/null +++ b/tests/dynamic-extent.impure.lisp @@ -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)) + +(sb-ext:quit :unix-status 104) \ No newline at end of file diff --git a/version.lisp-expr b/version.lisp-expr index 2cbb4c4..4ee3c85 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4