From bed178575454b8173f49041606ff909f495ca283 Mon Sep 17 00:00:00 2001 From: pfdietz <pfdietz@localhost> Date: Sat, 8 Jan 2005 14:16:53 +0000 Subject: [PATCH] Add free declaration scope tests for iteration forms --- ansi-tests/do.lsp | 40 ++++++++++++++++++++++++++++++++++++++++ ansi-tests/dolist.lsp | 19 +++++++++++++++++++ ansi-tests/dostar.lsp | 40 ++++++++++++++++++++++++++++++++++++++++ ansi-tests/dotimes.lsp | 19 +++++++++++++++++++ 4 files changed, 118 insertions(+) diff --git a/ansi-tests/do.lsp b/ansi-tests/do.lsp index 4074b059..5a7b29b0 100644 --- a/ansi-tests/do.lsp +++ b/ansi-tests/do.lsp @@ -121,5 +121,45 @@ (push #'(lambda () i) x)))) (5 5 5 5 5)) +;;; Scope of free declarations + +(deftest do.16 + (block done + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (do ((i (return-from done x) 0)) + (t nil) + (declare (special x)))))) + :good) + +(deftest do.17 + (block done + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (do ((i 0 (return-from done x))) + (nil nil) + (declare (special x)))))) + :good) + +(deftest do.18 + (block done + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (do ((i 0 0)) + ((return-from done x) nil) + (declare (special x)))))) + :good) + +(deftest do.19 + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (do () (t x) + (declare (special x))))) + :good) + (def-macro-test do.error.1 (do ((i 0 (1+ i))) ((= i 5) 'a))) diff --git a/ansi-tests/dolist.lsp b/ansi-tests/dolist.lsp index c5a049e4..307d6bc4 100644 --- a/ansi-tests/dolist.lsp +++ b/ansi-tests/dolist.lsp @@ -112,6 +112,25 @@ (when (eq e 'c) (return x)))) (c b a)) +;;; Scope of free declarations + +(deftest dolist.16 + (block done + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (dolist (e (return-from done x)) + (declare (special x)))))) + :good) + +(deftest dolist.17 + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (dolist (e nil x) + (declare (special x))))) + :good) + (def-macro-test dolist.error.1 (dolist (x nil))) diff --git a/ansi-tests/dostar.lsp b/ansi-tests/dostar.lsp index dcc51b50..f426af90 100644 --- a/ansi-tests/dostar.lsp +++ b/ansi-tests/dostar.lsp @@ -121,5 +121,45 @@ (push #'(lambda () i) x)))) (5 5 5 5 5)) +;;; Scope of free declarations + +(deftest do*.16 + (block done + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (do* ((i (return-from done x) 0)) + (t nil) + (declare (special x)))))) + :good) + +(deftest do*.17 + (block done + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (do* ((i 0 (return-from done x))) + (nil nil) + (declare (special x)))))) + :good) + +(deftest do*.18 + (block done + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (do* ((i 0 0)) + ((return-from done x) nil) + (declare (special x)))))) + :good) + +(deftest do*.19 + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (do* () (t x) + (declare (special x))))) + :good) + (def-macro-test do*.error.1 (do* ((i 0 (1+ i))) ((= i 5) 'a))) diff --git a/ansi-tests/dotimes.lsp b/ansi-tests/dotimes.lsp index 70c7c7d1..8501dd2f 100644 --- a/ansi-tests/dotimes.lsp +++ b/ansi-tests/dotimes.lsp @@ -147,5 +147,24 @@ (incf x))) 0 0) +;;; Scope of free declarations + +(deftest dotimes.22 + (block done + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (dotimes (i (return-from done x)) + (declare (special x)))))) + :good) + +(deftest dotimes.23 + (let ((x :good)) + (declare (special x)) + (let ((x :bad)) + (dotimes (i 10 x) + (declare (special x))))) + :good) + (def-macro-test dotimes.error.1 (dotimes (i 10))) -- GitLab