diff --git a/ansi-tests/dotimes.lsp b/ansi-tests/dotimes.lsp index 8501dd2fcb304157114fec5c39d93465cba36a47..389039e201734c536d94ce1b558806b7c9462dcb 100644 --- a/ansi-tests/dotimes.lsp +++ b/ansi-tests/dotimes.lsp @@ -122,6 +122,15 @@ y) (0 0 0 0)) +(deftest dotimes.17a + (let ((i 0) (y nil) (bound 4)) + (declare (special i)) + (flet ((%f () i)) + (dotimes (i bound) + (push (%f) y))) + y) + (0 0 0 0)) + (deftest dotimes.18 (let ((i 0) (y nil)) (declare (special i)) @@ -132,6 +141,16 @@ y) (3 2 1 0)) +(deftest dotimes.18a + (let ((i 0) (y nil) (bound 4)) + (declare (special i)) + (flet ((%f () i)) + (dotimes (i bound) + (declare (special i)) + (push (%f) y))) + y) + (3 2 1 0)) + (deftest dotimes.19 (dotimes (i 100 i)) 100) @@ -166,5 +185,21 @@ (declare (special x))))) :good) +(deftest dotimes.23a + (let ((x :good) (bound 10)) + (declare (special x)) + (let ((x :bad)) + (dotimes (i bound x) + (declare (special x))))) + :good) + +(deftest dotimes.24 + (let ((bound 4) (j 0)) + (values + (dotimes (i bound) + (incf j) (decf bound)) + bound j)) + nil 0 4) + (def-macro-test dotimes.error.1 (dotimes (i 10)))